unity单例怎么加锁
时间: 2024-09-24 16:23:15 浏览: 42
Unity单例模式模板类
在Unity中,为了防止多个同时实例化单例,通常会使用一种称为“静态初始化块”(Singleton with Static Constructor)的方式,并配合使用`lock`关键字来实现线程安全的单例模式。这里是一个简单的例子:
```csharp
public class Singleton : MonoBehaviour
{
private static Singleton _instance;
private static object _lockObject = new object();
// 静态构造函数,保证先于任何代码执行
static Singleton()
{
lock (_lockObject)
{
if (_instance == null)
{
// 如果当前没有实例,则创建一个新的
_instance = new Singleton();
}
}
}
// 私有化构造函数,防止外部直接实例化
private Singleton() {}
public static Singleton Instance
{
get
{
lock (_lockObject)
{
return _instance;
}
}
}
// 其他方法和属性...
}
```
在这个例子中,通过`_lockObject`作为锁,确保了任何时候只有一个线程可以访问单例的实例。当需要获取单例时,外部代码调用`Instance`属性,会自动获取并返回唯一的实例。
阅读全文