unity 簡單通用游戲模式設計

来源:https://www.cnblogs.com/xiaoahui/archive/2019/04/22/10753835.html
-Advertisement-
Play Games

好吧好吧,又談到這個問題了,其實早就想寫這個博客了,猶豫了好久。在設計游戲的時候我本人是很排斥什麼游戲架構設計,mvc什麼的,我只想馬上動手就把自己的游戲玩法最快的用代碼敲出來,還不會出無法輓回的錯誤,那麼下麵的步驟可以幫助你構建一個簡單的游戲模式架構。 一。首先是數據存儲類,如GameManage ...


好吧好吧,又談到這個問題了,其實早就想寫這個博客了,猶豫了好久。在設計游戲的時候我本人是很排斥什麼游戲架構設計,mvc什麼的,我只想馬上動手就把自己的游戲玩法最快的用代碼敲出來,還不會出無法輓回的錯誤,那麼下麵的步驟可以幫助你構建一個簡單的游戲模式架構。

一。首先是數據存儲類,如GameManager,UIManager,SoundManager等這些類,這些類是不銷毀的,由於這些類為物體組件,用普通的單例模式容易出現實例化的衝突,因此可以首先載入一個數據場景,間隔一段時間後載入第二個正式場景,以後最多的返回也只能返回到第二場景,這樣就解決了衝突問題

二。分場景控制類,每個場景中有可能要進行不同的複雜的控制,比如播放個動畫,選擇角色什麼的。比如UI場景,該場景中主要以UI功能為主,設置音量,選擇角色什麼的,都在該場景中進行,因此可以用個UIScene類的做一些特殊的控制;正式游戲場景,比如在UI場景選擇好了敵人,那麼現在進入正式打擊敵人,冒險什麼的,可以建立一個PlayScene場景,該場景用來控制播放個動畫次序什麼的各種操作。

三。通用類的作用,比如UI控制中物體的隱藏與出現,跳轉到另一個場景的操作,銷毀物體的操作這些可以用一個GeneralController的集成這些函數,然後作為組件的形式添加到需要的分場景的場景控制的物體上,這一點尤其對UGUI的添加事件很有效。

四。觀察者類與數據存儲類的靜態變數。比如游戲載入後要把當前的語言或者音量設置到相關物體上,那麼尋找攜帶這些數據的Manange類的方式有自帶的Find相關類,或者使用數據存儲類的instance靜態變數,判斷該靜態變數是否為真,如果為真,那麼就說明該類的物體存在,直接調用該靜態變數獲取到相關需要的數據。

五。為多個物體設置數據。這裡涉及到在場景中尋找具有相同標簽或者擁有相同組件的物體,這裡最好的方式是為每個相同組件的物體添加一個觀察者組件,該組件用於當物體生成時,調用相關的管理類,將自己存放到管理類的存儲列表中,這樣管理類就不用在場景中去尋找這些物體了。

六。對象池。這裡並非這篇博客主要內容,只是做個提醒,因為拋開性能問題,上面的的五條對一般游戲來說足夠了。對一些長期生成的物體如子彈等最好做成一個對象池,從而提高機器性能。


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 包_繼承 1.包 包(package) 用於管理程式中的類,主要用於解決類的同名問題。包可以看成目錄。 包的作用: 【1】防止命名衝突 【2】允許類組成一個單元模塊,便於管理 【3】更好的保護類、屬性和方法 1.1定義包 package用於定義包,形如:package 路徑(包名) 必須寫到源文件的 ...
  • 1.包(package) 包(package) 用於管理程式中的類,主要用於解決類的同名問題。包也可以看成一個目錄。 包的作用 [1] 防止命名衝突。 [2] 允許類組成一個單元(模塊),便於管理和維護。 [3] 更好的保護類、屬性和方法 。 1.1 如何定義包 使用package進行定義,應放在源 ...
  • LinkedBlockingQueue的實現方式? LinkedBlockingQueue是有界的還是無界的隊列? LinkedBlockingQueue相比ArrayBlockingQueue有什麼改進? ...
  • 在JDK1.8以前,介面(interface)沒有提供任何具體的實現,在《JAVA編程思想》中是這樣描述的:“interface這個關鍵字產生了一個完全抽象的類,它根本就沒有提供任何具體的實現。它允許創建者確定方法名、參數列表和返回類型,但是沒有任何方法體。介面只提供了形式,而未提供任何具體實現”。 ...
  • 星空不問趕路人,時光不負有心人,你可以脫變。 1.電腦的初步認識 2.解釋器的安裝 python2.7(2020年官方不在維護) python3.6 (官方推薦) 1.下載安裝包 https://www.python.org/ftp/python/2.7.14/python-2.7.14.amd6 ...
  • Tomcat的常用內置對象 1.request內置對象 所謂內置對象就是容器已經創建好了的對象,如果收到一個用戶的請求就會自動創建一個對象來處理客戶端發送的一些信息,這個內置對象就是request。類型是javax.servlet.http.HttpServletRequest。 request內置 ...
  • OO第二次博客作業——電梯調度 前言 最近三周,OO課程進入多線程學習階段,主要通過三次電梯調度作業來學習。從單部電梯的傻瓜式調度到有性能要求的調度到多部電梯的調度,難度逐漸提升,對同學們的要求逐漸變高,我們對線程的理解也逐漸加深。下麵筆者將對三次作業分別進行總結。 一、單部多線程傻瓜調度(FAFS ...
  • 1、我們首先創建一個文件夾(用於保存本地倉) 在我們想要創建的路徑下右鍵滑鼠打開Git Bash Here(創建一個文件夾,併進入文件夾) 2、通過命令git init把我們剛纔創建的文件夾變成Git可管理的倉 之後會在剛纔創建的文件夾內看到多了一個 .git 的文件夾,這個文件夾的作用是用來跟蹤和 ...
一周排行
    -Advertisement-
    Play Games
  • 示例項目結構 在 Visual Studio 中創建一個 WinForms 應用程式後,項目結構如下所示: MyWinFormsApp/ │ ├───Properties/ │ └───Settings.settings │ ├───bin/ │ ├───Debug/ │ └───Release/ ...
  • [STAThread] 特性用於需要與 COM 組件交互的應用程式,尤其是依賴單線程模型(如 Windows Forms 應用程式)的組件。在 STA 模式下,線程擁有自己的消息迴圈,這對於處理用戶界面和某些 COM 組件是必要的。 [STAThread] static void Main(stri ...
  • 在WinForm中使用全局異常捕獲處理 在WinForm應用程式中,全局異常捕獲是確保程式穩定性的關鍵。通過在Program類的Main方法中設置全局異常處理,可以有效地捕獲並處理未預見的異常,從而避免程式崩潰。 註冊全局異常事件 [STAThread] static void Main() { / ...
  • 前言 給大家推薦一款開源的 Winform 控制項庫,可以幫助我們開發更加美觀、漂亮的 WinForm 界面。 項目介紹 SunnyUI.NET 是一個基於 .NET Framework 4.0+、.NET 6、.NET 7 和 .NET 8 的 WinForm 開源控制項庫,同時也提供了工具類庫、擴展 ...
  • 說明 該文章是屬於OverallAuth2.0系列文章,每周更新一篇該系列文章(從0到1完成系統開發)。 該系統文章,我會儘量說的非常詳細,做到不管新手、老手都能看懂。 說明:OverallAuth2.0 是一個簡單、易懂、功能強大的許可權+可視化流程管理系統。 有興趣的朋友,請關註我吧(*^▽^*) ...
  • 一、下載安裝 1.下載git 必須先下載並安裝git,再TortoiseGit下載安裝 git安裝參考教程:https://blog.csdn.net/mukes/article/details/115693833 2.TortoiseGit下載與安裝 TortoiseGit,Git客戶端,32/6 ...
  • 前言 在項目開發過程中,理解數據結構和演算法如同掌握蓋房子的秘訣。演算法不僅能幫助我們編寫高效、優質的代碼,還能解決項目中遇到的各種難題。 給大家推薦一個支持C#的開源免費、新手友好的數據結構與演算法入門教程:Hello演算法。 項目介紹 《Hello Algo》是一本開源免費、新手友好的數據結構與演算法入門 ...
  • 1.生成單個Proto.bat內容 @rem Copyright 2016, Google Inc. @rem All rights reserved. @rem @rem Redistribution and use in source and binary forms, with or with ...
  • 一:背景 1. 講故事 前段時間有位朋友找到我,說他的窗體程式在客戶這邊出現了卡死,讓我幫忙看下怎麼回事?dump也生成了,既然有dump了那就上 windbg 分析吧。 二:WinDbg 分析 1. 為什麼會卡死 窗體程式的卡死,入口門檻很低,後續往下分析就不一定了,不管怎麼說先用 !clrsta ...
  • 前言 人工智慧時代,人臉識別技術已成為安全驗證、身份識別和用戶交互的關鍵工具。 給大家推薦一款.NET 開源提供了強大的人臉識別 API,工具不僅易於集成,還具備高效處理能力。 本文將介紹一款如何利用這些API,為我們的項目添加智能識別的亮點。 項目介紹 GitHub 上擁有 1.2k 星標的 C# ...