Unity单利模式模板

向大家提供一个单例模式的模板,只要继承这个类就可以实现单例模式。

   Unity单例模板

using System;
using UnityEngine;
using System.Collections;
using System.Text;
/// <summary>
/// Unity单利基类
/// </summary>
public abstract class Singleton_U<T> : MonoBehaviour
     where T:MonoBehaviour//T泛型继承单例模板的类最终继承哪,约定所有单利类必须是Unity的组件
{
    private static T _instance=null;//声明一个私有字段
    public static T _Instance//提供只读属性
    {
        get { return _instance; }
    }
    //类通过Awake()实例化单例对象,同时可以让子类重写Awake()
    protected virtual void  Awake()
    {
        _instance =  gameObject.GetComponent<T>();
    }
}

C#单例模板

    /// <summary>
    /// C#单利基类
    /// </summary>
    public class Singleton_C<T> where T: class,new ()
    {
        private static T instance = null;
        public static T Instance
        {
            get {
                if (instance == null)
                    instance = new T();
                return instance;
            }
        }
    }

 

 

Unity 中使用单例模式可以确保在整个游戏中只有一个实例存在,方便在各个场景和对象之间共享数据和功能。以下是一个简单的示例代码,展示了如何在 Unity 中调用单例模式: ```csharp public class SingletonExample : MonoBehaviour { private static SingletonExample instance; public static SingletonExample Instance { get { return instance; } } private void Awake() { if (instance != null && instance != this) { Destroy(this.gameObject); } else { instance = this; DontDestroyOnLoad(this.gameObject); } } // 在这里添加其他需要的功能和数据 public void SomeMethod() { // 执行某个方法 } } ``` 在上述代码中,`SingletonExample` 类继承自 `MonoBehaviour`,并包含一个静态字段 `instance` 和一个静态属性 `Instance`。`Awake()` 方法在对象被创建时调用,它会检查 `instance` 是否已经存在,如果存在则销毁当前对象,否则将当前对象赋值给 `instance`,并通过 `DontDestroyOnLoad()` 方法保留该对象在场景切换时不被销毁。 在其他脚本中,可以通过 `SingletonExample.Instance` 来访问单例对象,并调用其中的方法或访问数据。例如: ```csharp public class OtherScript : MonoBehaviour { private void Start() { SingletonExample.Instance.SomeMethod(); } } ``` 以上代码演示了如何在 Unity 中调用单例模式。使用单例模式可以方便地在游戏中共享数据和功能,并确保只有一个实例存在。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值