Unity-3d Day06
繼續(xù)搞單例模式? 在實戰(zhàn)中體會了一下單例模式?
唉? 還是搞不懂? 雖然知道了怎么寫? 但在哪用還是很模糊? 等以后寫多了就好了吧
回顧一下,單例模式的定義是:保證一個類只有一個實例,并且提供一個訪問它的全局訪問點。單例對象的類必須保證只有一個實例存在。在我們的場景中,全局腳本的對象只會創(chuàng)建一次,保證單例,然后它(全局單例類)提供給各個腳本訪問單例對象的方法,并且所有其他腳本的公共數(shù)據(jù)都會存儲在全局單例腳本中。
單例模式可以很方便地提供數(shù)據(jù)、對象的訪問方式,單例僅允許被實例一次,這就保證了他在各個程序模塊間的唯一性。大家可能會想到全局變量,是的,確實可以用全局變量來做。不過為了提供代碼的可維護性,全局是有很大局限的。你又想在Unity里經(jīng)常還可Static 變量會共享信息,不過你還發(fā)現(xiàn)他被聲明在各處。對的,不好找,不好維護。
至于使用嘛?? 我也在研究?? 基本上都是在控制游戲的流程啊?? 背景音樂啊? 切換場景啊什么的時候用到單例模式
以下是模型的單例模式:模型的單例不能有構(gòu)造器? 不 能 有 構(gòu) 造 器 !?? 而且要注意Awake和start的執(zhí)行順序。
using UnityEngine; using System.Collections;//對象單例模式 public class GameManager : MonoBehaviour {private static GameManager m_manager;public static GameManager M_manager{get{if (m_manager == null){m_manager = new GameObject("GameManager").AddComponent<GameManager>();}return m_manager;}}//注意執(zhí)行順序void Awake(){//添加音頻組件gameObject.AddComponent<AudioSource>();}// Use this for initializationvoid Start(){}//添加音頻public void PlayAudio(AudioClip clip){audio.PlayOneShot(clip);}// Update is called once per framevoid Update(){} }在攝像機腳本中簡簡單單調(diào)用一下就好了
void Start(){GameManager manager = GameManager.M_manager;manager.PlayAudio(clip);ModelManager modelManager = ModelManager.M_mamager;}
還有對象的單例,用法和c#時候沒什么兩樣
下面是一些Application類的使用??? 感覺還是一樣? 都是公式?? :
今天就研究這么多啦? good night buddies!
轉(zhuǎn)載于:https://www.cnblogs.com/little-sun/p/4379118.html
總結(jié)
以上是生活随笔為你收集整理的Unity-3d Day06的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 《设计师要懂心理学》-第五章-人如何集中
- 下一篇: Unhandled Exxception