日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Unity单例模式+例子

發(fā)布時間:2023/12/9 编程问答 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Unity单例模式+例子 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

Unity單例模式

      • 什么是單例模式?
      • 什么時候用到?
      • 優(yōu)點
      • 缺點
      • Unity單例模式例子

什么是單例模式?

答:單例模式(Singleton),也叫單子模式,是一種常用的軟件設(shè)計模式。在應(yīng)用這個模式時,單例對象的類必須保證只有一個實例存在。許多時候整個系統(tǒng)只需要擁有一個的全局對象,這樣有利于我們協(xié)調(diào)系統(tǒng)整體的行為。比如在某個服務(wù)器程序中,該服務(wù)器的配置信息存放在一個文件中,這些配置數(shù)據(jù)由一個單例對象統(tǒng)一讀取,然后服務(wù)進(jìn)程中的其他對象再通過這個單例對象獲取這些配置信息。這種方式簡化了在復(fù)雜環(huán)境下的配置管理。

什么時候用到?

答:當(dāng)游戲中的某一個游戲?qū)ο笥肋h(yuǎn)只有一個實例的時候,那么可以使用單例模式。

優(yōu)點

(1) 由于單例模式在內(nèi)存中只有一個實例,減少內(nèi)存開支,特別是一個對象需要頻繁地創(chuàng)建銷毀時,而且創(chuàng)建或銷毀時性能又無法優(yōu)化,單例模式就非常明顯了
(2) 由于單例模式只生成一個實例,所以,減少系統(tǒng)的性能開銷,當(dāng)一個對象產(chǎn)生需要比較多的資源時,如讀取配置,產(chǎn)生其他依賴對象時,則可以通過在應(yīng)用啟動時直接產(chǎn)生一個單例對象,然后永久駐留內(nèi)存的方式來解決。
(3) 單例模式可以避免對資源的多重占用,例如一個寫文件操作,由于只有一個實例存在內(nèi)存中,避免對同一個資源文件的同時寫操作
(4) 單例模式可以在系統(tǒng)設(shè)置全局的訪問點,優(yōu)化和共享資源訪問,例如,可以設(shè)計一個單例類,負(fù)責(zé)所有數(shù)據(jù)表的映射處理。

缺點

(1) 單例模式一般沒有接口,擴(kuò)展很困難,若要擴(kuò)展,除了修改代碼基本上沒有第二種途徑可以實現(xiàn)。
(2) 單例對象如果持有Context,那么很容易引發(fā)內(nèi)存泄漏,此時需要注意傳遞給單例對象的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} }

總結(jié)

以上是生活随笔為你收集整理的Unity单例模式+例子的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。