unity中使用C#实现一个单例
时间: 2024-03-29 20:40:05 浏览: 99
在 C# 中实现单例模式有多种方式,其中一种常见的方式是使用静态变量。下面是一个在 Unity 中使用 C# 实现单例的示例代码:
```csharp
public class MySingleton : MonoBehaviour
{
private static MySingleton instance;
public static MySingleton Instance
{
get
{
if (instance == null)
{
instance = FindObjectOfType<MySingleton>();
if (instance == null)
{
GameObject go = new GameObject();
go.name = "MySingleton";
instance = go.AddComponent<MySingleton>();
DontDestroyOnLoad(go);
}
}
return instance;
}
}
private void Awake()
{
if (instance == null)
{
instance = this;
DontDestroyOnLoad(gameObject);
}
else
{
Destroy(gameObject);
}
}
}
```
这个示例中,我们在类中定义了一个静态变量 instance,用于存储单例对象。在 Instance 属性中,我们首先检查 instance 是否为 null,如果是,就通过 FindObjectOfType 方法查找场景中是否已经存在 MySingleton 实例,如果存在就直接赋值 instance,否则就创建一个新的 GameObject,并添加一个 MySingleton 组件,再将其赋值给 instance。最后,我们返回 instance。
在 Awake 方法中,我们再次检查 instance 是否为 null,如果是,就将当前实例赋值给 instance,并调用 DontDestroyOnLoad 方法,以便在场景切换时不被销毁。如果 instance 不为 null,说明已经存在 MySingleton 实例了,我们就销毁当前实例。
使用时,我们可以通过 MySingleton.Instance 来获取单例对象。
阅读全文