好吧好吧,又談到這個問題了,其實早就想寫這個博客了,猶豫了很久。在設計遊戲的時候我本人是很排斥什麼遊戲架構設計,mvc什麼的,我只想立刻動手就把本身的遊戲玩法最快的用代碼敲出來,還不會出沒法挽回的錯誤,那麼下面的步驟能夠幫助你構建一個簡單的遊戲模式架構。架構
一。首先是數據存儲類,如GameManager,UIManager,SoundManager等這些類,這些類是不銷燬的,因爲這些類爲物體組件,用普通的單例模式容易出現實例化的衝突,所以能夠首先加載一個數據場景,間隔一段時間後加載第二個正式場景,之後最多的返回也只能返回到第二場景,這樣就解決了衝突問題mvc
二。分場景控制類,每一個場景中有可能要進行不一樣的複雜的控制,好比播放個動畫,選擇角色什麼的。好比UI場景,該場景中主要以UI功能爲主,設置音量,選擇角色什麼的,都在該場景中進行,所以能夠用個UIScene類的作一些特殊的控制;正式遊戲場景,好比在UI場景選擇好了敵人,那麼如今進入正式打擊敵人,冒險什麼的,能夠創建一個PlayScene場景,該場景用來控制播放個動畫次序什麼的各類操做。函數
三。通用類的做用,好比UI控制中物體的隱藏與出現,跳轉到另外一個場景的操做,銷燬物體的操做這些能夠用一個GeneralController的集成這些函數,而後做爲組件的形式添加到須要的分場景的場景控制的物體上,這一點尤爲對UGUI的添加事件頗有效。性能
四。觀察者類與數據存儲類的靜態變量。好比遊戲加載後要把當前的語言或者音量設置到相關物體上,那麼尋找攜帶這些數據的Manange類的方式有自帶的Find相關類;或者使用數據存儲類的instance靜態變量,判斷該靜態變量是否爲真,若是爲真,那麼就說明該類的物體存在,直接調用該靜態變量獲取到相關須要的數據。所以相比較而言,使用instance靜態變量更加可靠高效動畫
五。查找多個物體的問題,爲多個物體設置數據。這裏涉及到在場景中尋找具備相同標籤或者擁有相同組件的物體,這裏最好的方式是爲每一個相同組件的物體添加一個觀察者組件,該組件用於當物體生成時,調用相關的管理類,將本身存放到管理類的存儲列表中,這樣管理類就不用在場景中使用FInd方法去尋找這些物體了。架構設計
六。對象池。這裏並不是這篇博客主要內容,只是作個提醒,由於拋開性能問題,上面的的五條對通常遊戲來講足夠了。對一些長期生成的物體如子彈等最好作成一個對象池,從而提升機器性能。設計