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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

【转】DontDestroyOnLoad(Unity3D开发之五)

發布時間:2025/5/22 编程问答 185 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【转】DontDestroyOnLoad(Unity3D开发之五) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
原文??http://blog.csdn.net/cocos2der/article/details/38320773 主題?Unity3D

Unity中我們從A場景切換到B場景的時候,A場景所有對象都會銷毀,但有時候我不需要銷毀某些東西。

比如一個簡單的游戲的背景音樂,我不需要多次重復創建,多個場景播放這一個就行了。這個時候就需要用到DontDestroyOnLoad。

using UnityEngine; using System.Collections;public class MusicManager : MonoBehaviour { string volumeSetting; void Awake () { volumeSetting = PlayerPrefs.GetString("Volume"); if (volumeSetting == "False") { AudioListener.volume = 0; } DontDestroyOnLoad(gameObject); } }

我在場景加載的時候初始化場景音樂,之后的進入游戲場景,就不需要重新加載了。

注意:Unity 4.5之前的版本,在來回切換場景的時候會導致多次加載DontDestroyOnLoad的對象,導致出現多個的bug。 如果你是Unity 4.5之前,請使用一個static變量記錄你的對象是否已經初始化,防止多次創建。

上面是一個辦法,當然你也可以使用單例的方式代替DontDestroyOnLoad。

宣雨松的博客中提到過這種方式,下面一段是宣雨松寫的,僅此記錄一下。 原文:http://www.xuanyusong.com/archives/2938

首先程序會進入static Global方法中,這個方法永遠只會走一遍,所以我在這里創建一個GameObjcet,然后把Global這條腳本綁定上去,我在DontDestroyOnLoad這個對象。

using UnityEngine; using System.Collections;public class Global :MonoBehaviour { public static Global instance; static Global() { GameObject go = new GameObject("Globa"); DontDestroyOnLoad(go); instance = go.AddComponent<Global>(); } public void DoSomeThings() { Debug.Log("DoSomeThings"); } void Start () { Debug.Log("Start"); } }

這樣這條腳本就類似一個靜態腳本了,而且這個游戲對象也永遠不會因為切換場景而被銷毀。而且用起來非常方便。在需要調用它的地方直接調用就行了。

Global.instance.DoSomeThings();

轉載于:https://www.cnblogs.com/mimime/p/6828525.html

總結

以上是生活随笔為你收集整理的【转】DontDestroyOnLoad(Unity3D开发之五)的全部內容,希望文章能夠幫你解決所遇到的問題。

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