【发布时间】:2018-08-16 19:12:37
【问题描述】:
我在 Unity 中工作,有一个名为 GameManager 的单例,其中包含一个名为 GameSettings 的对象,我想从其他类中访问它:
public class GameManager : MonoBehaviour {
public static GameManager instance;
public GameSettings gameSettings;
void Awake() {
if(instance != null)
GameObject.Destroy(instance);
else
instance = this;
DontDestroyOnLoad(this);
}
}
例如,我可以使用 GameManager.instance.gameSettings.offlineMode 从另一个班级访问它。但我想要一种更简单的方法来编写这个,让代码更清晰,所以在另一个类中我做了:
public class Health : Photon.MonoBehaviour {
private GameManager gm;
void Awake(){
// Get components
anim = transform.GetChild(0).GetComponent<Animator>();
unitController = GetComponent<UnitController>();
gm = GameManager.instance;
}
}
然后我可以使用gm.gameSettings.offlineMode。这在大多数类中运行良好,但在一个类中它不起作用,并且给了我 NullReferenceException: Object reference not set to an instance of an object。
为什么会发生这种情况,而且只发生在一个班级?我应该检查什么,像这样“速记”一个单例实例是不是一个坏主意?
【问题讨论】:
标签: c# unity3d singleton instance