新人小白,剛開始自學。不知道這麼理解學著對不對?

unity3d作為工具的作用是實現效果。效果包括素材,動作,音效。動作包括npc動作,場景里的物體動作(動畫)。而實現這些動作需要腳本語言編輯下命令。也就是說,unity程序開發需要學習unity3d界面操作以及動作的腳本語言。而相應的腳本語言,其實在網上可以找到,比如物體npc前後左右移動,而移動的過程又涉及物理等規則,為了讓觀感更好,又會額外做些渲染。

是這樣嗖?所以我的學習思路應該是按照這個邏輯來學???

只是看了初級小遊戲的觀感,正在看中級和高級以及AR。之後應該對架構更清晰些。

還有個問題,按照視頻學習,做出來的精靈不知道為啥點了幾下就不見了,像被我刪了一樣


我覺得你不能這樣理解Unity。

Unity是一個「引擎」,它一半相當於「解釋器」或者「編輯器」或者「整合器」,把各式各樣的資產(Asset)整合成關卡甚至遊戲/應用;另一半相當於「工具集」,提供給用戶一批可以直接拿來使用的成品或半成品資產(Asset)。使用Unity的過程,就是利用它所提供的資產以及用戶自己創作的資產,在它所允許的規則下,整合出最終的產品來。

你所謂的「素材,動作,音效」,其實都是美術資產,而你所謂的「腳本語言」,其實也是資產,只不過是「腳本資產」而已。包括你新建了一個Cube或者Light,上面所附著的component(組件),也是Unity提供的腳本資產,有能力的開發者完全可以自己寫新的腳本來替換其中的大部分。

我倒是比較認同你說「Unity是實現效果的工具」這句話,不過更準確的表述應該是,「Unity通過不同資產的有機組合來實現效果」,真正起作用的是這些資產,而Unity本身只是個比較好用的「編輯器」。就好比一個卡通渲染效果,模型是資產(可以來自Maya導出的FBX,也可以來自自建的Sphere,但本質上都是Mesh),shader是資產(不論是內置的還是從Asset Store買的還是自己寫的還是拿插件連出來的),通過Unity這個編輯器我們可以把Shader通過Material指定給模型,然後就可以呈現齣卡通渲染的效果。

關於程序方面的理解,我建議你先脫離Unity去了解(科普)一下程序設計的原理,至少先搞清楚什麼是類,什麼叫繼承,什麼叫然後再轉回頭看Unity教程中教你寫的那些腳本,你就會發現,其實這些簡單教程中的腳本大部分都是在直接調用Unity內置好的「腳本資產(其實也就是那些『類』,部分是Unity獨有的,部分是C#本身就提供的)」在做整合工作。

更高級一些的腳本可能會自己寫新的「類」,來提供原生Unity不提供的新功能,比如那些Asset Store上下載的插件類資源中的腳本。

你搞明白這些以後,就會知道,那些我們所看到的「效果」,都是一些更為基礎的「功能模塊」的整合和調用而產生的最終結果。拿你所說的「物體npc前後左右移動」來說吧,教程裡面大多教的是用Rigidbody來SetVelocity,但其實本質上在Set Transform,Rigidbody也只是內置於Unity的一種用來模擬物理規則的功能模塊,而且還屬於超簡陋的那種。光是Unity內置的Set Transform的方式就有Rigidbody、Player Controller、Navmesh Agent三種,並不是只有涉及物理規則才能前後左右移動物體npc哦。很多2D Platformer遊戲根本就嫌棄Unity內置的Rigidbody2D功能模塊,完全自己重寫重力和碰撞檢測呢。

回到如何學習Unity的話題上吧。

初學者當然首先要掌握界面操作以及一些最常用的基礎功能模塊,比如如何處理並整合模型材質貼圖動畫數據,如何做Terrain,如何烘焙渲染,如何調用並整合動畫數據,如何使用Navmesh,如何使用UGUI等等。

然後就可以分成美術和程序兩個方向進行較深入的學習。學習如何為Unity生成美術資產,以及如何為Unity生成程序資產。

美術方向要深入學習其實已經脫離unity了,三維方向的模型貼圖動畫其實是在Maya、3DMax、Zbrush等軟體中做,二維方向的背景原畫、Tilemap、UI元素等等其實是在PS裡面畫。對應的Unity功能模塊當然也要學,但相比之下就簡單得多了。

程序方向要深入學習也得半脫離unity,一些基本的編程原則,設計思路其實屬於程序員的個體修鍊了,還真不是「從網上找到現成的然後拿過來直接用」那麼簡單。當然如果你有較好的編程基礎只是剛剛接觸Unity這個軟體的話,當然會比純小白要輕鬆得多,因為那些「詩外的功夫」你已經掌握得七七八八了。


現代商業遊戲引擎≈編輯器+開發框架

編輯器部分就像PS、PR、CAD一樣學操作使用就好

開發框架部分,該怎麼學框架就怎麼學它。


「相應的腳本語言,在網上可以找到」,大部分情況下不對。

題主想太多了,紙上談兵毫無作用,直接找一些視頻教程跟著做兩個小遊戲看看。


而相應的腳本語言,其實在網上可以找到,比如物體npc前後左右移動,而移動的過程又涉及物理等規則,為了讓觀感更好,又會額外做些渲染。

基本上是這個理,但那不叫「渲染」,只能叫「處理」,渲染指的是顯示的方面。


最好先把語法基礎學好再接觸引擎,也就是C#語法,前期基礎不牢,後面知識稍微深一點看啥都看不懂。然後是Ngui,Ugui,然後對UI界面有一個通用的框架意識,起碼得會做個背包系統和頁面切換吧。然後就是熟悉各個組件的屬性和API了,動畫系統,音頻系統,剛體,碰撞器,渲染器,事件系統等等等等,涉及到網路,要知道基礎的Socket類和Http吧,然後考慮到網路遊戲客戶端更新問題,還得學Lua和ab包打包和載入機制吧。只能說路漫漫其修遠兮,少年加油吧。


你想好做什麼遊戲了嗎?

為了學而學?

沒有考試,也沒人會發給你畢業證的。

unity3D就是一個生產開放劇情的車間。

圖片,模型,動畫只是材料而已。

(需要PS Maya 3Dmax 等,軟體輔助製作)

程序大致分為:

為遊戲邏輯服務的C#,

和為效果服務的CG。

兩種語言。

遊戲和程序不分高低,

小遊戲和AR,都是各種功能程序的堆砌。

高手只是知道更底層的原理,進而可以自由的使用和改造。

所以,網上的程序段,不僅要拿來用,最好學習裡面的原理。

網上的程序功能段代碼無窮盡。

你需要先有製作目標,然後拿來己用。

想學完所有然後再做遊戲?這輩子可能都學不完。


遊戲引擎分為運行庫和工具兩部分,工具有設計編輯工具,也有調試打包工具。

這幾部分其實完全可以獨立存在,unity只是把他們整合在了一起。


推薦閱讀:
相关文章