在游戏场景切换或者实例化代码中,我们不希望某一代码或者类在此场景中多次出现,从而导致数据的混乱或者调用混淆。另一种情况就是我们在场景跳转中,想要保持某一组件在整个项目中只有一个,常见的有人物的属性,你肯定不希望当你跳转场景时出现两个你吧。
我也曾用来计时运行此项目不单单限制一个场景所使用的时间。
此时我们需要使用单例来保证此代码在此项目中只有一个。
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.SceneManagement;
public class AwakeByte : MonoBehaviour {
// 改为自己的类
public bool bDontDestroyOnLoad = false;
public static AwakeByte Instance;
private void InitializeInstance()
{
if (Instance != null & Instance == this)
return;
if (bDontDestroyOnLoad)
{
if (Instance == null)
{
Instance = this;
DontDestroyOnLoad(gameObject);
}
else
{
Destroy(gameObject);
}
}
else
{
Instance = this;
}
}
private void Awake()
{
InitializeInstance();
}
}
网友评论