Unity单例模式+例子
Unity單例模式
- 什么是單例模式?
- 什么時候用到?
- 優點
- 缺點
- Unity單例模式例子
什么是單例模式?
答:單例模式(Singleton),也叫單子模式,是一種常用的軟件設計模式。在應用這個模式時,單例對象的類必須保證只有一個實例存在。許多時候整個系統只需要擁有一個的全局對象,這樣有利于我們協調系統整體的行為。比如在某個服務器程序中,該服務器的配置信息存放在一個文件中,這些配置數據由一個單例對象統一讀取,然后服務進程中的其他對象再通過這個單例對象獲取這些配置信息。這種方式簡化了在復雜環境下的配置管理。
什么時候用到?
答:當游戲中的某一個游戲對象永遠只有一個實例的時候,那么可以使用單例模式。
優點
(1) 由于單例模式在內存中只有一個實例,減少內存開支,特別是一個對象需要頻繁地創建銷毀時,而且創建或銷毀時性能又無法優化,單例模式就非常明顯了
(2) 由于單例模式只生成一個實例,所以,減少系統的性能開銷,當一個對象產生需要比較多的資源時,如讀取配置,產生其他依賴對象時,則可以通過在應用啟動時直接產生一個單例對象,然后永久駐留內存的方式來解決。
(3) 單例模式可以避免對資源的多重占用,例如一個寫文件操作,由于只有一個實例存在內存中,避免對同一個資源文件的同時寫操作
(4) 單例模式可以在系統設置全局的訪問點,優化和共享資源訪問,例如,可以設計一個單例類,負責所有數據表的映射處理。
缺點
(1) 單例模式一般沒有接口,擴展很困難,若要擴展,除了修改代碼基本上沒有第二種途徑可以實現。
(2) 單例對象如果持有Context,那么很容易引發內存泄漏,此時需要注意傳遞給單例對象的Context最好是Application Context。
Unity單例模式例子
GameManager腳本
using System; using UnityEngine; using UnityEngine.UI;public class GameManager : MonoBehaviour {private static GameManager _ins;public static GameManager Ins { get { return _ins; } }public int value;private void Start(){if (!_ins){_ins = this;}} }其他腳本
using System; using UnityEngine; using UnityEngine.UI;public class Other : MonoBehaviour {private void Update(){GameManager.Ins.value++;//Anythings} }總結
以上是生活随笔為你收集整理的Unity单例模式+例子的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: mysql 绕过select报错_MyS
- 下一篇: .net api 和java平台对接技术