。首先我們看看遊戲主要是由哪幾部分組成的,如下圖所示,任何平台下的任何遊戲核心都是由:資料、邏輯、渲染三大部分組成。
當你寫過》=2個平台下的遊戲時你會發現其實遊戲開發很「容易」,為什麼「容易」呢?因為此時你會發現所有平台下開發遊戲的模式,如下圖中的「資料」與「邏輯」兩部分真的是完全一樣的,這兩部分是與遊戲開發平台無關的。然而真正與遊戲平台有關的緊緊是「渲染」這部分,因為各個遊戲平台下的渲染介面是不同的。這也就印證了一點,能把j2me遊戲寫好的程式設計師就必然能把ios或android遊戲同樣的寫好。讀到這裡請結合一下你的公司情況,你可能會發現在你的技術總監兩三天就能上手unity3d遊戲開發 cocos2d遊戲開發,這並不是他對遊戲平台研究的透徹,而是他對遊戲資料的掌控能力非常強,所以能很快玩轉各個平台下的開發。
如下圖所示,unity3d這套遊戲引擎在遊戲開發中的權重如圖中所示。其中包含100%的渲染部分 +50%左右的邏輯部分。(因為unity3d封裝了很多與邏輯相關的api供開發者使用)
下面我們回到unity3d指令碼架構的編寫上,我們知道unity3d在是可以建立遊戲場景的,在每個遊戲場景中又可以建立遊戲物件,把每個場景的遊戲物件融合在一起就是一款3d遊戲。遊戲場景之間屬於同等級的關係,為了讓遊戲場景之前互動我們需要有乙個凌駕所有場景之上的指令碼,我稱之為「全域性指令碼」。如下圖所示,所有場景都能與這個唯一的全域性指令碼進行互動。舉個例子,當場景切換時可將臨時邏輯資料寫入全域性指令碼中,切換完畢後再去全域性指令碼中取之前儲存的資料,從而實現互動。(當然還有別的辦法也能實現這個效果,但是我覺得這樣做會更好一些,資料會更安全一些)
接著我們就進入場景中,遊戲場景是由若干遊戲物件組成,下面我好好說一說遊戲物件。遊戲物件是需要繫結遊戲指令碼才能完成它的生命週期。那麼指令碼的使命就會尤其的重要。因為遊戲物件比較多那麼指令碼必然會出現互動的情況,如下圖所示,很多初期unity3d的專案中的指令碼會編寫成這個樣子。錯綜複雜相互互動,這樣編寫的指令碼有可能你的遊戲能做出來,可是你在維護的時候團隊開發的時候你會發現你的指令碼非常的混亂,別的同事想改都不知道怎麼改。(顯然這樣的作法時完全錯誤的)
我們想想為什麼指令碼之間要互動,原因很簡單。是因為指令碼中需要使用/呼叫另一條指令碼或者另一條指令碼對應的遊戲物件某一項資料/方法,為了解決這個問題而導致最終的指令碼非常混亂。為了避免這個問題,我在開發中會這麼做,如下圖所示,指令碼之間切記不要做直接的相互互動,指令碼之間只做間接的互動。每乙個遊戲場景都有乙個凌駕所有遊戲物件之上的單例指令碼,在這條指令碼中儲存場景中所有指令碼的公共資料。包括該場景的整體邏輯更新都是在這條單例指令碼中完成。每條指令碼都只與這個單例指令碼做互動,和別的指令碼一概不互動。(間接互動)
編寫指令碼時請注意,指令碼只幹屬於自己最重要的事情,就跟**中的函式一樣,只幹最重要的事情。切記和該條指令碼無關的事情不要去管,不要在指令碼中做過多的相互連帶工作,讓所有連帶工作的話都放在全域性單例指令碼中來做。
上述邏輯我是完全按照剛剛中所說明的方式來寫,這樣做就可以很好的避免互動互動混亂的情況,其實開發中的所有類似這種互動的情況都能很好的用這個全域性單例指令碼來解決。希望廣大unity3d開發愛好者可以和我討論,因為我知道架構設計沒有最好只有更好。嚯嚯!!
如何寫 如何寫好指令碼?
好的指令碼當然要有好的開場白 好的開題 破題 話題引入,好的敘述與分析 好的結束語。好的指令碼還應有好的輔助說明的素材,700 800字的指令碼,對應的素材數量如下 非真人出鏡者 素材數量需要翻倍,最好找到超過20個素材。寫好指令碼還應注意以幾點 一 開門見山 快速切入主題,這樣的話就更容易讓觀眾對...
如何寫sybase sql指令碼檔案 如何寫好指令碼?
好的指令碼當然要有好的開場白 好的開題 破題 話題引入,好的敘述與分析 好的結束語。好的指令碼還應有好的輔助說明的素材,700 800字的指令碼,對應的素材數量如下 非真人出鏡者 素材數量需要翻倍,最好找到超過20個素材。寫好指令碼還應注意以幾點 一 開門見山 快速切入主題,這樣的話就更容易讓觀眾對...
指令碼命令 如何寫gdb命令指令碼
作者 nanxiao 編輯 包包 作為unix linux下使用廣泛的偵錯程式,gdb不僅提供了豐富的命令,還引入了對指令碼的支援 一種是對已存在的指令碼語言支援,比如python,使用者可以直接書寫python指令碼,由gdb呼叫python直譯器執行 另一種是命令指令碼 command file...