一个可供继承的单例组件模板类:
public class SingletonComponent<TComponent> : MonoBehavior
where TComponent : SingletonComponent<TComponent>
{
static TComponent _instance;
private static TComponent GetOrFindOrCreateComponent()
{
// 双检索
if (_instance == null)
{
// 尝试在场景中查找已存在的组件
_instance = FindObjectOfType<TComponent>();
// 如果找不到, 则创建一个空对象, 并且挂载上组件
if (_instance == null)
{
GameObject gameObject = new GameObject();
_instance = gameObject.AddComponent<TComponent>();
}
}
return _instance;
}
public static TComponent Instance => GetOrFindOrCreateComponent();
}
因为 Unity 是单线程的, 所以在这里没有必要使用双检索
使用方式
例如你要创建一个全局的单例管理类, 可以这样使用:文章来源:https://www.toymoban.com/news/detail-718988.html
public class GameManager : SingletonComponent<GameManager>
{
// your code here
}
注意事项
尽量避免让 SingletonComponent
帮你创建组件, 因为它只是单纯的将组件创建, 并挂载到空对象上, 而不会进行任何其他行为. 如果你的组件需要进行某些初始化, 那么它可能不会正常.文章来源地址https://www.toymoban.com/news/detail-718988.html
到了这里,关于[Unity] 单例设计模式, 可供继承的单例组件模板类的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!