两个场景中来回跳转时 DontDestroyOnLoad的物体会重复创建 , 而我们要求场景中只存在一个。
解决办法:
flag判断
//不需要销毁的物体是否存在
public static bool isClone = false;
//场景加载时不需要销毁的预制体
public GameObject obj;
private GameObject cloneObj;
private void Awake()
{
if(!isClone)
{
cloneObj = Instantiate(obj);
DontDestroyOnLoad(cloneObj);
isClone = true;
}
}
单例模式
public class DontDestroyTest : MonoBehaviour
{
public static DontDestroyTest instance = null;
private void Awake()
{
if (instance != null)
{
Destroy(gameObject);
return;
}
instance = this;
DontDestroyOnLoad(gameObject);
}
}
标签查找
创建一个名为“Global”的空物体, 并设置tag为“Global”。将所有需要保留的对象作为Global空物体的子物体 ,再把以下脚本挂载在Global空物体上