Unity中使用单例类

来源:互联网 发布:mysql 读写分离插件 编辑:程序博客网 时间:2024/06/04 19:54

Unity中使用单例类

  • 单例模式
  • Unity中单例类的创建
  • Unity中单例类的使用

单例模式

单例模式是一种常用的软件设计模式。在它的核心结构中只包含一个被称为单例类的特殊类。通过单例模式可以保证系统中一个类只有一个实例而且该实例易于外界访问,从而方便对实例个数的控制并节约系统资源。如果希望在系统中某个类的对象只能存在一个,单例模式是最好的解决方案。

Unity中单例类的创建

using UnityEngine;using System.Collections;/// <summary>/// 单例类/// </summary>public class SingleClass {    //防止外部实例    private SingleClass()    {    }    //静态单例对象(之后一直访问的都是它)    private static SingleClass _instance;    //获取单例对象的方法    public static SingleClass Instance()    {        if(_instance == null)        {            _instance = new SingleClass ();        }        return _instance;    }    /// <summary>    /// 原黑色方块,现在的颜色    /// </summary>    public Color blackColor;    /// <summary>    /// 原白色方块,现在的颜色    /// </summary>    public Color whiteColor;    /// <summary>    /// 用于开始界面,更换白色方块的颜色    /// </summary>    /// <param name="c">C.</param>    public void ChangeWhileColor(Color c)    {        SingleClass.Instance().whiteColor = c;    }    /// <summary>    /// 用于开始界面,更换黑色方块的颜色    /// </summary>    /// <param name="c">C.</param>    public void ChangeBlackColor(Color c)    {        SingleClass.Instance().blackColor = c;    }}

Unity中单例类的使用

using UnityEngine;using System.Collections;public class InitCubes : MonoBehaviour {    //别踩白块中的一层白块    public GameObject cubes;    //用户黑色方块的外部接口    public Color blackColor;    //用户白色方块的外部接口    public Color whiteColor;    /// <summary>    /// 用户设置    /// </summary>    void Awake()    {        SingleClass.Instance().ChangeBlackColor(blackColor);        SingleClass.Instance().ChangeWhileColor(whiteColor);    }    /// <summary>    /// 游戏开始    /// </summary>    void Start()    {        //在000的位置创建预设体对象        GameObject mycubes =             Instantiate(cubes,Vector3.zero,            Quaternion.identity) as GameObject;        //随机的索引号        int index = Random.Range(0,4);        //给四个方块设置颜色        for(int i = 0 ; i < 4 ; i++)        {            //随机到的方块设置成黑块颜色            if(i == index)            {                mycubes.transform.GetChild(i).                GetComponent<SpriteRenderer>().color =                     SingleClass.Instance().blackColor;            }            //其他三个方块设置成白块颜色            else            {                mycubes.transform.GetChild(i).                GetComponent<SpriteRenderer>().color =                     SingleClass.Instance().whiteColor;            }        }    }}

作者:莫新宇

公司:蓝鸥科技有限公司

微信号:M514208625

Sina微博:欣羽馨予

邮箱:moxinyu@lanou3g.com

0 0
原创粉丝点击