Unity中的單例方法


  前沿:在我的工作期間和學習期間,看過和學過很多單例方法,可謂是奇形怪狀,不過都能實現其功能。今天我將學到的和自己思考出來的單例方法進行一個匯總和分析。

 

單例一:最簡單的單例方法 A --- 繼承於MonoBehaviour

  1.首先創建一個名叫:XXXManager.cs 的腳本,這個腳本就是我們的單例了。這個最簡單的單例方法實現如下:

    

 

  2.如何調用呢?我們創建一個叫 Main.cs 的腳本來調用它,在其Start()方法里面,調用XXXManager的TestMethod()方法,代碼如下:

    

 

  3.然后我們需要在Unity的Hierarchy創建兩個組件,分別叫“Main” 和 “XXXManager”,接着把對應的腳本分別掛載上去,例如:Main組件掛載上Main.cs腳本,XXXManager組件掛載XXXManager.cs腳本。

    

 

  4.運行之后的結果如下:

    

 

  總結:這應該是最簡單的單例方法了。

  

 

單例二:升級版單例方法 B --- 繼承於MonoBehaviour

  接下來介紹一種更“規范”一點的單例方法。

  1.修改 XXXManager.cs 腳本,其余地方不修改,代碼如下:

    

 

  2.運行結果如下:

    

 

 

單例三:單例方法 C --- 不繼承於MonoBehaviour

  在我們的日常開發中,有的單例方法是不繼承於MonoBehaviour的,不需要將其掛載到GameObject組件上去。這類不需要掛載的。

  1.修改 XXXManager.cs 腳本,修改后的腳本如下:

    

 

  2.因為是不繼承於MonoBehaviour,所以需要將 Hierarchy 面板中,XXXManager上掛載的腳本移除。

  3.運行結果為:

    

    

  總結:上述的單例方法中,我們可以進行歸納。其實就是繼承和不繼承 MonoBehaviour 的單例方法,接下來我們將用到C#語言面向對象的特點(封裝、繼承、多態),對我們的單例進行一個更好的規范。

 

 

單例四:最終版D --- 繼承於MonoBehaviour(不隨着場景切換而銷毀) 

  1.首先,我們將寫一個基類,這個基類實現了單例方法,並且不隨着場景的切換而銷毀。腳本如下:

    

 

  2.修改 XXXManager.cs 腳本,修改后的腳本如下:

    

 

  3.運行結果:

    

 

 

單例五:最終版E --- 不繼承於MonoBehaviour(不隨着場景切換而銷毀)

  1.首先,寫一個基類,腳本如下:

    

 

  2.修改XXXManager腳本,修改后的腳本如下:

    

 

  3.運行結果如下:

    

 

  總結:單例的幾種方法已經寫完了,在輕量級(Demo)的開發中,我覺得A B C三種單例方法已經滿足我們的開發需求。但是如果是比較大型的項目或者說我們平時學習中的話,我推薦使用D E兩種方法去做。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM