是這個樣子的,本人現在開學大三,數字媒體藝術專業,是個娘們 。

因為意識到技術跟不上想法之後我就開始認真學習一些軟體,例如c4d,zbrush,ae等等 ,目前的情況是都學會了一些基礎入門,精通都算不上。

與此同時我也在自學unity,在b站看了《史上最全unity教程》的前60(或許更多?)節之後,我實在是看不明白了。從開始講c#基礎的時候,我開始異常認真,但是最終我好像還是傻了。

!!!注意我已經學了一些了基礎只不過後面的內容開始不理解然後跟不上進度了

我的個人目標是在畢設的時候能做出來一款完整的小遊戲,emmm我不知道這對我來說到底有多遠?但是我覺得只要我保持高效學習,加上練習,我尋思著應該。。問題不大吧?

(我還跟著siki學院的教程做了個小案例來著,滿足感爆棚)

我現在面臨的問題就是c#的學習,我不懂我現在應該通過遊戲案例教學去通過案例學習還是單獨學習c#教程。或者說有什麼好的學習方法或課程的推薦嗎。

這對我來說真的很重要,我不是說不願意花時間花精力去學,是我不想走歪路 (雖然我知道我什麼都不會無論看什麼教程只要學到東西就是好的,但是我還是想聽聽各位大佬的意見和建議。)

或者是那種一套下來茅塞頓開的那種。。教程?(大概不會有這種教程吧我在想p吃對不起。)

哪怕你們說我太笨了我也能接受的! (畢竟我覺得我自己賊聰明我不聽不聽不聽不聽 )

害有時候看見彈幕說,這都學不會別想做遊戲了,我就默默地關掉彈幕,害,誰都是從不會開始的嘛,一遍不會看兩遍嘛 我堅強我不哭嗚嗚嗚嗚


贊同 @皮皮關 的說法。

用Unity做遊戲和自己寫引擎有一個重要的區別,就是Unity你得熟悉他裡頭的套路,否則寫不出來任何東西。所以用其他人的引擎就是這點麻煩,你得習慣他裡頭的東西,不是光會一些語言就可以的。

所以你要做的,就是和皮皮關說的那樣,先學一部分C#,具體學到哪一步,首先你要看得懂教程裡頭的代碼,其次你得知道為什麼在Unity里要調用這個調用那個,就行了。

然後你就開始做遊戲。我這裡給皮皮關補充一下,就是怎麼選取自己要做的遊戲?很多人在這裡就會陷入兩難的問題,要不是不知道自己想做什麼,要不是自己想做的太難了。那麼我這裡的建議就是——跟著電子遊戲的歷史走。

一般來說歷史越早的遊戲,技術上相對簡單一些。所以上來你可以做Tetris、Galaga、Frogger這種只有輸入輸出和基本動畫、規則又及其簡單的二維遊戲。其實這些遊戲一樣令人上癮,長盛不衰,因為它們代表了先賢對遊戲本質的理解,而沒有後來層層疊加上去的東西。所有後來的同類型遊戲,都可以抽絲剝繭還原來這些最初的形式。(我這麼說有點誇張,大家理解理解意思)

如果在製作過程中你覺得C#的基礎不夠了,那就再回去學一點。學一點再回來把遊戲完成。這時候不用去糾結什麼代碼的優美,以後你會強迫自己做到的,相信我。

接下來就可以做卷屏的platformer,代表作就是Super Mario,當年的紅白機上沒有一千個也有五百個類似的遊戲,選幾個自己喜歡的就可以了。記住你每做一批遊戲,最好都比上批遊戲多一點東西。這是契合一萬個小時原則中刻意訓練的原理——如果每一批遊戲都差不多,怎麼鍛煉得到呢?進入到這批遊戲,你會發現由於可以不斷地卷屏,遊戲的內容比之前豐富多了。如果技術上跟得上的話,你可能會考慮到在Unity中製作一款專門供自己使用的編輯器,或者給Unity製作一些插件來完善自己的工作流。此外,既然遊戲的內容豐富多了,你也將會琢磨一些程序架構、序列化和反序列化的知識。還是那句話,沒必要做的最好,沒必要上來就逼著自己走ECS,目前還是需要做出東西來,如果想自己造輪子,那就盡情的造,此時不造更待何時?

於是你又會覺得編程有點跟不上了,也會隱隱約約地覺得,好像編程不單純是語言的問題,而是一種方法論。隨著遊戲越來越複雜,它會迫使你考慮一系列編程上的問題,因為再也回不到那個一屏打天下的時候了。

隨著你編程越來越精進,可以考慮做更複雜一點的遊戲了。可以嘗試做一款RPG,簡單的那種就行。RPG和之前的遊戲相比更加複雜,所謂麻雀雖小五臟俱全,有對話、物品欄、更多的Scene、等等。RPG可以說是這條學習路徑的一個里程碑,代表著你能夠獨立完成一款相對複雜的遊戲。他對你的要求也是比較高的,需要你對一些基礎的數據結構和演算法有一定了解。總體來說,當你能夠獨立製作一款RPG,就證明你已經雙腳跨入門檻了。


首先,理想的遊戲開發學習應該像下面這樣:

編程基礎、理論知識的學習,應當與開發實踐互為補充:

  1. 從做小遊戲開始,發現自己不懂的知識點。通過學習基礎,把不懂的知識變成已知的知識。
  2. 再把新學到的基礎知識運用在遊戲開發中,通過實踐真正掌握它。
  3. 如此循環往複,走上大牛之路。

題主目前的情況是長期停留在第1步,從第1步到第2步的階段受到阻礙。題主也提到:

我現在面臨的問題就是c#的學習,我不懂我現在應該通過遊戲案例教學去通過案例學習還是單獨學習c#教程。或者說有什麼好的學習方法或課程的推薦嗎。

個人強烈建議,專心單獨學習C#,不用學得太深,只需要能看懂你現階段已經寫過的腳本的程度。其實這個要求已經不低了,因為照著視頻教程寫出來的腳本,寫的時候理解程度接近於0。

學習C#時一定要做一些專項練習題,循環、排序演算法、數組操作等等。不要嫌麻煩,磨刀不誤砍柴工。


1、學習c#語言,基礎語法,System名空間基礎庫,特別是容器相關。

2、開始用unity做小的遊戲demo,學習unity API與編輯器。

3、學會用ilspy看c#編譯出的dll,知道c#語言有哪些語法糖會產生內存分配,明白box與unbox何時會發生。

4、學會編寫與使用內存池,減少頻繁內存分配,盡量增加GC觸發的間隔時間。

5、在xcode上看c#翻譯出的il2cpp代碼,了解il2cpp的工作原理。

學完這些應該差不多了,之後就是各種專業技術學習了。


分隔符下面的有點嘮叨所以長求總:

創造力一部分來源於自己已經知道的東西,哪怕只是知道概念,用的時候去查也可以。

C# 方面,查閱微軟的 C# 指南學習變數類型、循環、選擇、函數、結構體和類等基礎概念,記住一些 .Net 庫提供的常用工具比如列表、字典、集合。

Unity 方面,知道 Monobehaviour 腳本的幾個特殊函數的作用,記住 Unity 的工作流基於預製體,在 Unity 你可以從磁碟讀文件進來,可以做動畫,不需要用腳本實現一切。

既然你的目標不是專門的程序員,以你的製作目標出發,實現功能為王。


看你的專業,遊戲製作鐵三角里的定位應該更偏策劃或者美術。從這層認知出發我會想說別被腳本的事耽擱了,像 rpgmaker 這樣的可視化腳本插件應該能作為輔助。

但如果你認同我的立場——編程本不難,感到難只是沒有找到合適的方法——依然可以嘗試腳本和編輯器預置的工具實現遊戲邏輯,在遇到問題時查閱 Unity 文檔 和 C# 指南 。

你需要的所有編程基礎只有腳本中的變數、分支和循環、函數和C#的屬性、結構體和類、點net庫提供的列表集合字典之類的小玩意,還有一點點關於繼承的知識。所有概念都可以在微軟提供的指南里找到。

對 Unity 中的 Monobehaviour 腳本而言,有一些對引擎有特殊含義的函數,比如 Start、Update、OnDisable,只要記一下就夠了。

為了做出完整的遊戲,最應該關注的是功能本身。Unity 的工作流程基於預製體,記住這一點很有幫助。確定實現功能需要的組件應該包含的內容,組裝節點和腳本,製作預製體,在遊戲場景放置預製體或者把預製體文件拖進任何一個名字叫 Resources 的文件夾里然後用腳本載入(如果你的遊戲像《植物大戰殭屍》那樣需要動態生成很多敵人,這是個可行的方法)。

最後,你可以利用的工具還有很多,比如從磁碟讀取文本表格、使用 ScriptableObject 儲存配置信息、使用幀動畫記錄特定的動作,不要把所有的工作都壓在腳本上。


啊,就學c#就好了,不過只要學到變數類,函數怎麼寫就行了。其他的數據結構,演算法就可以看了。然後調用unity api實現簡單的移動,就這樣


推薦閱讀:
相关文章