Unity必看技术贴

如何使游戏对象切换场景后不释放?DontDestroyOnLoa

2021-09-07  本文已影响0人  半夏半暖半倾城灬

有时候我们想要保存一个全局的游戏脚本,比如封装的SDK需要用脚本来做中间件的支持,并且场景切换后仍要留存。

那么游戏对象切换场景如何不释放?答:使用DontDestroyOnLoad(GameObject gameObject)方法。

使用该方法会有一个问题,比如我们在A场景里DontDestroyOnLoad(gameObjectA),则我们切换到B场景时GameObjectA不会被释放掉,然后我们再切换回场景A,会发现出现了两个gameObjectA

解决方案1

创建一个初始化场景,在创建的某个游戏对象的全局脚本中,Start方法里DontDestroyOnLoad(this),

void Start(){

    DontDestroyOnLoad(this)

}

然后进入自己的第一个游戏场景,且不再返回初始化场景,也就不会出现来回切场景DontDestroyOnLoad没有删除的问题

解决方案2

利用静态构造函数只会执行一次的特性来执行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");

}

}

上一篇下一篇

猜你喜欢

热点阅读