如何學好 Unity?

我喜歡遊戲開發,想學學Unity,希望大牛指導一下


最近在知乎和微博上經常有人問我如何開始學習Unity3D,在我看來,這樣分為幾個階段:

  • 初學者,先從Unity官網的視頻開始看起,地址在此,跟著視頻做出你的第一個遊戲吧,所有的資源,代碼在Asset Store都可以下載到。
  • 熟練者,關注Unity聖典和Unity User Manual,在這一階段,要把在第一階段所忽略的內容進行選擇性的補充學習。
  • 進階者,關注Unity社區,Unity Answers,Unity Wiki和知乎的Unity板塊,在這一階段,要對Unity的各種細節問題,優化,底層原理和新的技術方案都要進行思考和學習。在以上幾個模塊中,知乎的Unity板塊尤其值得關注,乾貨滿滿而且都是中文,建議通讀。

在進階者這一階段,你才可以對一些中間件進行學習,具體學習什麼樣的Asset,還要由你的項目需求決定,不過無論如何還是推薦學習這幾個Asset:Behavior Designer(AI), DoTween(Tween動畫), PlayMaker(可視化編程),Shader Forge(可視化的Shader編寫)和Elementals(粒子特效)。

當你將進階者的學習內容完成之後,你就已經是一個合格的Unity工程師了,開發一個遊戲對你來說不再是一個問題,各種工作也是手到擒來。

如果你還覺得不過癮的話,就可以嘗試反編譯一些市面上流行的Unity3D遊戲來獲取代碼,畢竟真實生產環境中的代碼才是最值得深入研究的,在這部分我還是要推薦啪啪三國的代碼,相當整潔。

在完成以上的學習過程中,看一些第三方的博客也是蠻有用的手段,在這裡無恥地推銷一下我的博客


對於Unity學習

做了5年的Unity,很深的一個體會是,於Unity其實不用過分關注具體實現,尤其是現在網路資源如此的豐富。

個人覺得就Unity學習,掌握幾個很重要的點,

1.基本編程語言功底,C#、js、數據結構、演算法

2.Unity資源流原理(Unity如何處理資源關係的,mate、 library、prefab之間的關係 dll如何被引用等等),基於這些關係去構建自己的資源管理結構。

3.做好對象生命周期管理(利於管理內存、利於更加靈活結構化)

4.善用unity文檔和answer

這幾點處理好了就足夠用了,然後我們關注的具體實現,網路上很多現成的解決方案,處理這些解決方案,這些解決方案不要直接拿來用,看看人家的思路明白其作用用自己的理解去實現自己的解決方案。

我是很不贊同去看網路上的demo來學習Unity的,Untiy的思想是可以用任意腳本對象去構建一個項目,這是非常方便非常靈活的,這是個很大的優點,然而這對於新手來說是很可怕的缺點,就像往一個容器里放入很多散落的個體,然而在項目這些個體又是項目有引用關係的,那麼個體之間的偶合關係處理的不好那這就會成一個項目很大的問題。然而目前網路上的demo,大部分都是不夠結構化不夠框架化的初級demo。於初學者很悲催的一點是,如果一開始你從這些demo上去理解Unity,你就會進入完全基於實現的誤區。很多問題都靠掛載腳本來解決,於產品級項目這樣的思想是很可怕的,會嚴重影響產品迭代速度、管理成本以及時間成本。甚至很多教學視頻往往也是把新手引入了這個誤區。


個人的學習感受而言,學習unity分為以下幾個階段。

推薦第一階段先找幾個案例跟著視頻完成,這個階段主要培養興趣和對unity有個初步的認識。

第二階段,看極客學院的unity 5.x教學視頻,挺完整的。極客學院要求用戶是VIP即可觀看全套教程。但是,獲得VIP的途徑卻非常容易,只需要邀請小號或者同學註冊一個賬號即可。

第三階段,看書。對知識點進行查漏補缺,我個人用的是《unity 5.x 從入門到精通》。

第四階段,看API,不需要記住所有的用法,記得有這樣一個功能即可,個人稱之「開闊眼界」。

第五階段,嘗試獨立開發以及繼續查漏補缺。

第六階段,參加工作。(這裡的工作指實習啊!!!在實習中,你會發現自己還有很多不足!繼續學習!)

第七階段,跳槽加薪。(當你感覺自己在前一個實習公司學得差不多了,就該考慮自己能力與現在的回報是否匹配了吧…或者說,當你能力提高了以後,是不是該考慮往大公司去了呢?)

2016.6.14

補充說一下學習U3D所需的編程基礎。U3D自帶編譯器monodevelop,支持語言C#和JS。一般都是用C#,這裡姑且不說為什麼,感興趣的自己百度就可以。C#達到入門級別就可以了,編程的過程中,我個人感覺是各種靈活調用各種類,去創造屬於你自己的遊戲,去設定你所想要的玩法。

另外提一下,我是學生,第一次把自己學習過程中的感受分享出來,不一定都對,不一定適用於每個人,還請大家指導。謝謝大家的贊(≧▽≦)/。

(書是圖書館借的,大學生一定不要浪費圖書館的資源。)2017/2/20

U3D的知識點比較零散,學習過程中,容易出現迷茫,一定不要放棄!推薦一本自己用過以後覺得比較好的書。

2017/12/18

補充一個發布unity教學視頻的公眾號,siki學堂。


Deadline


學會Unity 其實不難,但要說在任一領域做精的話,都是需要下大功夫的。以下是針對程序來說的學習路線

  • 初步熟悉Unity
    • 熟悉Unity的開發環境,界面,文檔:(知道有問題時去哪裡找很重要)
    • 熟悉Unity的基本概念:(包括但不限於)
      • Game Object Component
      • Prefab
      • Tag
      • Layer
      • Mono Behaviour 的生命周期
    • 熟悉Unity的資源管理
      • 知曉常用的遊戲開發資源從哪裡來,到哪裡去,包括但不限於:模型,材質,動畫,數據表,配置表.....
      • 熟悉Unity的工程結構
        • 內置目錄
        • 區分清楚工程文件中哪些是引擎生成的文件,在協同工作時避免這些文件產生衝突
        • 形成一些良好的習慣,整理乾淨工程。
    • 熟悉Unity中各個常用的子系統及其相關組件,知道怎麼去使用是第一步
      • 物理
      • 動畫
      • UI
      • 圖形渲染
      • ...
    • 熟悉在Unity中的遊戲開發編程
      • 3D數學
      • 常用API
      • 熟悉常用的數據結構
      • 編程基礎薄弱的,還要惡補一下編程功底
  • 使用Unity產出作品,形成自己的正向反饋
    • 經過之前的熟悉過程,到這裡應該已經有一定的熟悉程度了,那麼別停下,開始做些個人作品吧。
    • Asset Store上面有很多值得學習的完整工程,找自己感興趣的,下載下來,開始復刻,在復刻的過程中,學習別人的經驗
    • 自己給自己定一個小目標,使用Unity開發點自己的東西
  • 深入學習
    • 在這個階段,如果可以的話,最好先明確了自己未來的發展方向,要知曉自己未來想做什麼, 以下我列出了一些,可能的發展方向,每種方向,都有不同的深入學習的路線。所以選好了,就朝著一個方向努力吧,不要朝三暮四。
      • 獨立開發者
        • 用到什麼學什麼,是這個路線的唯一真理,一切跟著你的項目走
      • Gameplay工程師
        • 這個路線會學的稍微雜一些, 但有幾項是必須要融會貫通的,一個好的Gameplay工程師其實是非常難得的,特別是在這個大環境就是程序員都喜歡往底層做而忽視直接跟用戶接觸的上層邏輯。
          • 數學知識基礎
          • 物理知識基礎
          • 熟練掌握,且深入理解動畫系統
          • 熟練掌握,且深入理解UI系統
          • 熟練掌握,且深入理解物理系統
          • 熟練掌握,且深入理解渲染系統
          • 網路,AI.... 等等
          • 總的來說,就是得熟悉引擎的方方面面,還得懂遊戲。
      • 引擎工程師
        • 鑒於渲染部分是任何一個引擎的核心模塊,所以先從這裡研究起吧,但這也絕對不是引擎的全貌。嘗試下自己實現個軟體渲染器,非常有利於深入理解渲染管線。
        • 打牢C++基礎,畢竟現代遊戲引擎,底層都是C++。由於Unity畢竟是個閉源引擎,其源碼你是看不到了,就算有,也是老版本的了。所以找些其他引擎的源碼讀讀吧。
        • 基於Unity實現自己的擴展模塊。
      • 遊戲設計師
        • 用到什麼學什麼,做到自己能實現遊戲原型,就夠了
      • ....

這裡還有一些教程,希望能幫到你:遊戲開發入門指南


unity 相當於遊戲開發的集成開發環境,涉及到遊戲開發的各個方面,並且都是經過層層封裝的,非常貼近於業務邏輯層,對於底層要求不高;因此,opengl,directx,c# 之類的粗略懂點就可以了。

之後的unity學習主要圍繞項目來進行,例如可以參考一些項目視頻:

Unity RPG MMO-火炬之光開發修改

自己改改代碼,加加功能,這樣才能快速進步


新手:首先是要了解 Unity 的基本操作。熟悉 Unity 中的基本概念。如果英語好建議看官方視頻。

Unity - Learn - Modules

英語吃力可以看泰課在線,遊戲蠻牛的基礎課程。

泰課在線

蠻牛教育

操作基本熟悉之後可以看 C# 的基礎課程,不要求學的有多深入,但是基本的語法要學的差不多。與此同時,可以看一些簡單的 2D 案例。2D 比 3D 要簡單不少。我覺得通過案例學習是進步很快的。可能剛開始會覺得很吃力,但是一些 API 用的多了,自然會有一些印象。

入門:我推薦先學一些 UI 的知識,包括 NGUI UGUI,國內仍然有很多項目在用 NGUI 。做一些 UI 的小案例可以熟悉這些 UI 框架的用法。其他一些模塊,包括 DOTween,Mecanim 動畫等等。也建議做一些小案例熟悉用法。當你對 Unity 的大部分知識會了基本的使用後,可以開始跟著做一些稍微大型一點的 3D 遊戲 Demo。推薦一個視頻:

黑暗之光-視頻教程

裡面包含了背包系統,技能系統,狀態系統,商店系統,小地圖等功能。是使用 NGUI 開發,但是如果你也可以自己用 UGUI 開發。遇到不會的 API ,去官方文檔查。

Unity User Manual (2017.1)

學習了這些稍微大一點的案例,就需要深入學習一下 C#。對委託,線程,網路,泛型,文件都要有一個系統的學習。

進階:可以自己動手寫一個簡單的 UIFramework ,封裝一些常用的操作。比如:

MrNerverDie/Unity-UI-Framework

進階對代碼要求更高。對程序的可維護性也越高。可以學習一些常用的數據結構和演算法。包括設計模式,推薦《設計模式與遊戲完美開發》《遊戲編程模式》兩本書。至於 Shader,在大公司裡面技術美術主要負責 Shader ,而且 Shader 需要靜下心來學習。如果只是入門的話推薦《Shader入門精要》。另外包括 xlua 熱更新,AI 編程,性能優化都要有一個基本功紮實的學習,如果有興趣,可以深入。關於網路方面,建議自己寫一個 C# 或者 C++ 的伺服器,然後在自己用 Unity 寫前端。至於書籍推薦,Milo 那個書單有很多書,可以選取幾本書來讀。

遊戲程序員的學習之路(中文版)

另外如果是剛開始寫小遊戲 Demo 的話,《Unity遊戲設計與實現 南夢宮一線程序員的開發實例》值得一讀。


如果能找到一個學完推薦工作的培訓班是不錯的選擇,否則培訓班完全沒必要。雖說就業形勢是不錯的,但也要看你能力怎樣了,自學競爭壓力很大,也很難跟專業學計算機的去競爭,所以樓主要學就抱著背水一戰的信念不要徘徊猶豫,否則很難入這行。如果下定決定要學就看看下面的幾條吧。

自學最高效的方法是:

1.基礎

c#基本語法(unity官方教材里的就夠了,遇到不懂再查)

Unity各界面基本功能(unity官方教材,挑重點看)

2.上手

開始自己做Demo,做你已有源碼的demo,先不要看源碼,自己實現一遍,然後再和源碼對比,這是最關鍵的時候,一定要多思考!不然學了就忘了。

3.堅持

重複2,直到不需要看源碼你就入門了。(英語好的話期間可以看看Mastering Unity Scripting)

4.進階

拿著自己的demo去找工作吧,在工作中提升自己,遇神殺神,遇佛殺佛,盡量先獨立思考問題,再去找搜索引擎,再去找人請教。

5.其他

以上只是皮毛,想要提升還要看圖形學,數學等更多知識,需要時時刻刻學習新知識,解決新問題,這是一個極具挑戰卻又充滿趣味的職業。只要不忘初心,堅持下去,付出總會有回報的!共勉!

作者:TechArtistWang

鏈接:新人想學習U3D,問下老司機? - TechArtistWang 的回答

來源:知乎

著作權歸作者所有。商業轉載請聯繫作者獲得授權,非商業轉載請註明出處。


不建議去論壇學,也不建議上來就看手冊——前者資源太分散,後者看不懂。

我這裡假設你熟悉c#編程,但是沒做過Unity。

你真正需要的是一個視頻教程:《使用Unity 3D進行遊戲開發入門教程》(VTC.Introduction.to.Game.Development.Using.Unity.3D)[光碟鏡像]

學完這個以後,你需要學習GUI,因為Unity本身的GUI現階段不好使。常用的插件可以看看NGUI:Asset Store

學完了Unity本體的操作和NGUI以後,你實際已經可以做出一些小遊戲了。

如果你覺得有些東西寫腳本特麻煩(例如AI),可以看看PlayMaker Asset Store

學完了這些,要怎麼發展你就應該有數了。之後碰到要學習的,最好去油管翻教程(高處不勝寒,請自備梯子)

對於API的問題,查官方手冊是極好的


官方文檔,官方視頻,雨松momo加知乎大神回答和博客


雖然也是Unity新入門的菜鳥一枚,但是我也想分享一下我的一些心得。

Unity其實是一個很易上手的一個遊戲引擎。最開始的時候在你什麼都不知道甚至連哪個菜單是什麼意思都不懂的時候,你需要一本書來讓你知道一些基礎操作,我在用張帆編寫的《Unity3D遊戲開發基礎》,書可以快速讓你上手,熟悉一下界面和一些簡單的功能。

最重要的就是做!做!做!感興趣的不感興趣的都可以親手試試,模型可以去蠻牛網下載http://m.unitymanual.com/forum-model-1.html,還有CSDN這個搞計算機的經典網站。如果某些功能還有問題或者解決不了的,百度一下哪些函數能實現,然後去聖典官網裡面有翻譯好的API手冊,絕對良心好用啊!

當然,還可以逼自己一把,多做項目,和大神一起做,哪怕做一些小小的事情,但是能學到的非常多。超值的高效率體驗~


謝邀,樓上選易的答案已經比較全面啦,對於初學者、高級者、進階者的要求是不一樣的,如果答主的意志力比較強的話參考已有答案中的資料已經是非常豐富了,在此從開源項目的角度推薦一些優質的 Unity 項目,供大家一起交流學習。

目前 Unity 已成為最受歡迎的移動遊戲引擎,在國內也有很多採用 Unity 開發的客戶端遊戲以及網頁遊戲,比如成都九眾的《將魂》,《老友記》,駿夢的《仙劍奇俠傳OL》等。不過,隨著開發者和製作室越來越多,這對 Unity 既是一種挑戰也是一種機遇。

1. 項目名稱:基於 Unity 的遊戲框架 Game Framework

項目簡介: Game Framework 是一個基於 Unity 5.3+ 引擎的遊戲框架,主要對遊戲開發過程中常用模塊進行了封裝,很大程度地規範開發過程、加快開發速度並保證產品質量。

項目地址:OzhizuO/UnityGameFramework - 碼雲 Gitee.com

2. 項目名稱:基於 Unity3d 的城市跑酷

項目簡介: 本項目是基於 Unity3d StrangeIOC 框架的創意 3D 城市跑酷項目。主角在城市中不斷的逃跑白天要躲避警察,晚上要躲避惡魔,無盡的跑酷,最終擺脫頑敵迎來短暫的自由。

項目地址:keyle_xiao/SuperStrange - 碼雲 Gitee.com

3. 項目名稱:基於 Unity3D 的經典炸彈人

項目簡介: 自己用 Unity3D 製作的經典炸彈人全套源碼,無限關卡版,還原了經典炸彈人的所有功能,供大家相互學習。

項目地址:Foldcc/炸彈人-無限 - 碼雲 Gitee.com

4. 項目名稱:unity3d 客戶端的伺服器端 demo

項目簡介: 該 demo 實現了 mmo 遊戲的基礎模塊 aoi (基於興趣範圍的廣播),世界聊天, 空間管理等。

項目地址:BossHX/xingo_demo - 碼雲 Gitee.com

5. 項目名稱:高仿村莊保衛者遊戲

項目簡介: 模仿村莊保衛者遊戲,全部使用 Unity 的 uGUI 製作,基於 Unity 5 版本。目前包括:UI 部分、戰鬥部分、道具部分,功能基本完成。

本遊戲是一款半自動是防守遊戲,簡單回合制戰鬥,除腳本外,其他所有音樂、音效、圖像等素材均來源於網路,版權歸原作者所有。

項目地址:孤月藍風/VillageGuardians - 碼雲 Gitee.com

6. 項目名稱:火炬之光 Unity RPG MMO

項目簡介: 該遊戲為一款網路 MMO Unity RPG 遊戲,主要使用了 C# 作為工程的開發語言。通過 python protobuffer 等技術用於配置表管理和網路協議生成。該 RPG 遊戲主要包含以下功能:

  • AI狀態機
  • 換裝系統
  • 技能系統
  • 網路系統
  • UI系統等

項目地址:李勇2/unityRpg - 碼雲 Gitee.com

碼雲 http://Gitee.com

發現更多優質開源項目:最新推薦 - 碼雲 - 開源中國

團隊流暢、高效開發:碼雲企業版 - 碼雲 - 開源中國


不清楚函數功能時查Unity API文檔,文檔很靠譜。

遇到問題時Google,基本Unity的問題都可以找到答案,用英文來描述問題,在最前面加上unity,Unity社區很強大,類似的問題大概都會找到答案。

看別人代碼,可以把別的unity製作的遊戲拿過來。利用reflector可以反編譯出來代碼,可以參考學習。

再有時間看下DX之類的書吧,或者實現些shader之類的。


本人也在學習中,說說我的方法吧,希望有借鑒意義。

首先,參考書/參考文檔是必須的,這些資料都會詳細地介紹一個小遊戲的開發過程。入門就是要熟悉這個過程。我在看的書是《unity3D手機遊戲開發》,還有一份PDF《unity3D遊戲開發》。雖然也有官方文檔,但是剛入門還是不建議從官方文檔學起。當你入了門,要學深,再去看參考文檔了。

然後選擇一門腳本語言,有C#,JS等,C#用得比較多,個人也是用的C#。unity3D給我的感覺就是給事物注入腳本的過程。我個人採用的是比較死板的辦法,按照參考資料上的遊戲一個個完成=_=。學習階段,如有誤解請務必指出,希望U3D愛好者多多交流!


我認識的u3d程序員,大部分是自學的。

有條件的,選擇靠譜的網路視頻課程,系統學習3~5個遊戲的製作,跟著學。

最好把自己的心得整理、發布出來,如我的個人博客--為了激勵自己能夠自學下來。


前期看教程,中期看遊戲項目源碼,後期看Unity插件源碼,每個階段都要大量的編程實戰


有條件就算倒貼錢也要參加實際項目 邊做邊學才有動力 實踐真理論


unity學習起來並不難,很好上手,先了解它的操作界面和c#編程,然後用小例子來進行實學實用,很快就可入門了。


那個吧我個人覺得自學才是王道,國內你可以去看下泰課的哪些教程,當然我本人並不是推銷,我只是覺得適合入門是不錯的,之後的發展我個人建議跟項目走, 邊干邊學才是王道


官方那本書是很棒的,上邊已經有人放出來了。

其他網站論壇也有人推薦過了,這個你可可以看看,極視教育http://www.skillbridge.cn


建議去公司邊做邊學,下班後有時間再看看視頻


建議可以參加培訓。

自學的話,學習一年或許也只是皮毛。培訓的話四個月到六個月就可以精通(當然,最主要的還是要看師資力量)。

通常如果參加培訓,如果培訓學校的就業資源比較好,跟同行業的公司或者項目團隊有合作,比如好玩科技,對你的就業也有幫助,如果你學習期間比較出色,很很大可能被推薦到這些公司。

當然,最主要的是自己的心態。如果是三天打魚兩天晒網,那可能永遠學不會。


推薦閱讀:

独立游戏的开发过程中如何准确的确定构思的元素是否有趣?
用Unity引擎開發遊戲,如何提升編程能力?
Unity開發怎麼優化大量物體的物理碰撞而產生的FPS等參數急劇下降?
一個重新排列的演算法,如何計算每種排列的概率?
Unity遊戲編程中如何避免runtime動態alloc內存?

TAG:遊戲開發 | 遊戲公司 | Unity遊戲引擎 |