Unity 单例与实例的区别

单例整个进程只能存在一个实例 ,实例可以无限new.要保持一个对象的单一就得用单例,要想实现面向对象就得实例。



单例的定义:Singleton.cs

using UnityEngine;
using System.Collections;

public class Singleton : MonoBehaviour
{
    private static Singleton _instance;
    public static Singleton Instance
    {
        get
        {
            if (!_instance)
            {
                _instance = GameObject.FindObjectOfType(typeof(Singleton)) as Singleton;
                if (!_instance)
                {
                    GameObject container = new GameObject();
                    container.name = "Singleton";
                    _instance = container.AddComponent(typeof(Singleton)) as Singleton;
                }
            }
            return _instance;
        }
    }
}

单例的使用UserSingleton.cs

using UnityEngine;
using System.Collections;

public class UserSingleton : MonoBehaviour {

	
	void Start () {
        <span style="white-space:pre">	</span>Singleton singleton = Singleton.Instance;
	}
	
	
}


这样就能获得一个单例,如果你们是多场景加载(网络socket连接使用),可以在Singleton.cs的 void Start () 方法中加上 DontDestroyOnLoad(this);这样 你就可以多场景使用这个单例了,  在别的场景对象中要使用的话,还要把这个单例指向别的场景 很简单在别的场景的 void Start () 中加上Singleton.Instance=this;  好了,到此结束.

技术q群479853988欢迎你的加入喽!


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值