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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Unity-3d Day06

發布時間:2025/3/13 编程问答 19 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Unity-3d Day06 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

繼續搞單例模式? 在實戰中體會了一下單例模式?

唉? 還是搞不懂? 雖然知道了怎么寫? 但在哪用還是很模糊? 等以后寫多了就好了吧

回顧一下,單例模式的定義是:保證一個類只有一個實例,并且提供一個訪問它的全局訪問點。單例對象的類必須保證只有一個實例存在。在我們的場景中,全局腳本的對象只會創建一次,保證單例,然后它(全局單例類)提供給各個腳本訪問單例對象的方法,并且所有其他腳本的公共數據都會存儲在全局單例腳本中。

單例模式可以很方便地提供數據、對象的訪問方式,單例僅允許被實例一次,這就保證了他在各個程序模塊間的唯一性。大家可能會想到全局變量,是的,確實可以用全局變量來做。不過為了提供代碼的可維護性,全局是有很大局限的。你又想在Unity里經常還可Static 變量會共享信息,不過你還發現他被聲明在各處。對的,不好找,不好維護。

至于使用嘛?? 我也在研究?? 基本上都是在控制游戲的流程啊?? 背景音樂啊? 切換場景啊什么的時候用到單例模式

以下是模型的單例模式:模型的單例不能有構造器? 不 能 有 構 造 器 !?? 而且要注意Awake和start的執行順序。

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;}}//注意執行順序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(){} }

在攝像機腳本中簡簡單單調用一下就好了

void Start(){GameManager manager = GameManager.M_manager;manager.PlayAudio(clip);ModelManager modelManager = ModelManager.M_mamager;}


還有對象的單例,用法和c#時候沒什么兩樣

using UnityEngine; using System.Collections;//模型單例 public class ModelManager{private static ModelManager m_mamager;public static ModelManager M_mamager{get {if (m_mamager == null) {m_mamager = new ModelManager();}return ModelManager.m_mamager; }}public Mouse[] mouses = new Mouse[10];public ModelManager() {for (int i = 0; i < 10; i++){mouses[i] = new Mouse();}}}


下面是一些Application類的使用??? 感覺還是一樣? 都是公式?? :

using UnityEngine; using System.Collections;public class GameController : MonoBehaviour {public AudioClip clip;// Use this for initializationvoid Start(){GameManager manager = GameManager.M_manager;manager.PlayAudio(clip);ModelManager modelManager = ModelManager.M_mamager;}// Update is called once per framevoid Update(){}void OnGUI() {GUILayout.Label(Application.platform.ToString()); GUILayout.Label(Application.runInBackground.ToString()); GUILayout.Label(Application.dataPath.ToString());GUILayout.Label(Application.persistentDataPath.ToString());GUILayout.Label(Application.temporaryCachePath.ToString());GUILayout.Label(Application.loadedLevel.ToString());//切換場景if (GUILayout.Button("level")) {//銷毀之前場景Application.LoadLevel(1);//不銷毀之前場景Application.LoadLevelAdditive(1);}//退出if (GUILayout.Button("quit")){Application.Quit();}//鏈接 打開網頁if (GUILayout.Button("baidu")){Application.OpenURL("http://www.baidu.com");}}}

今天就研究這么多啦? good night buddies!

轉載于:https://www.cnblogs.com/little-sun/p/4379118.html

總結

以上是生活随笔為你收集整理的Unity-3d Day06的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。