【Unity】非MonoBehaviour子类的单例管理
来源:互联网 发布:淘宝购买手机模板 编辑:程序博客网 时间:2024/04/29 12:36
单例管理类代码
/********************************************************************** *Copyright(C) 2016 by zhiheng.shao *All rights reserved. *FileName: SingletonContainer.cs *Author: zhiheng.shao *Version: 1.0 *UnityVersion:5.3.3f1 *Date: 2016-04-20 *Description: *History: **********************************************************************/using UnityEngine;using System.Collections.Generic;using System.Collections;namespace Rickshao.Singleton{ public class SingletonContainer : Singleton<SingletonContainer> { public T GetInstance<T>() where T : new() { string singletonName = typeof(T).ToString(); T singleton = Container<T>.Get(singletonName); if (singleton == null) { singleton = new T(); Container<T>.Set(singletonName, singleton); } return singleton; } private static class Container<T> { private static Dictionary<string, T> m_Collections = new Dictionary<string, T>(); public static Dictionary<string, T> Collections { get { return m_Collections; } } public static T Get(string singletonName) { if (m_Collections.ContainsKey(singletonName)) { return (T)m_Collections[singletonName]; } return default(T); } public static void Set(string singletonName, T singleton) { m_Collections.Add(singletonName, singleton); } } }}
使用示例
/********************************************************************************* *Copyright(C) 2016 by zhiheng.shao email:zhiheng.rick@gmail.com *All rights reserved. *FileName: BaseFlow.cs *Author: zhiheng.shao email:zhiheng.rick@gmail.com *Version: 1.0 *UnityVersion:5.3.5f1 *Date: 2016-07-21 *Description: *History: **********************************************************************************/using UnityEngine;using System.Collections;using Rickshao.StateMachine;using Rickshao.Singleton;//TODO: 换成单例namespace KickBall.Main.GameFlow{ public abstract class BaseFlow<T> : IState<GameFlowController> where T : BaseFlow<T>, new() { public static T Instance { get { return SingletonContainer.Instance.GetInstance<T>(); } } /// <summary> 获取状态名 </summary> /// <returns></returns> public string GetStateName() { return GetType().ToString(); } public abstract void Enter(); public abstract void Exit(); }}
0 0
- 【Unity】非MonoBehaviour子类的单例管理
- Unity继承MonoBehaviour的静态单例
- Unity 游戏框架搭建 (三) MonoBehaviour单例的模板
- Unity 游戏框架搭建 (三) MonoBehaviour单例的模板
- Unity 游戏框架搭建 (三) MonoBehaviour单例的模板
- Unity 游戏框架搭建 (三) MonoBehaviour单例的模板
- MonoBehaviour的单例模式
- MonoBehaviour的单例模式
- C#单例与继承MonoBehaviour的单例
- Unity中Monobehaviour的生命周期
- Unity MonoBehaviour
- [Unity&接口]子类即继承接口类也继承MonoBehaviour的快速操作和重构实现
- unity中的MonoBehaviour.OnMouseDown()
- Unity中的MonoBehaviour类
- Unity Manual之MonoBehaviour
- unity之MonoBehaviour
- unity扩展MonoBehaviour
- 【Unity】 Unity单例模式的使用
- LeetCode-70:Climbing Stairs
- 设计模式---行为类型---备忘录
- L1-020. 帅到没朋友-PAT团体程序设计天梯赛GPLT
- 最小生成树[Kruskal&&Prim](学习)
- vim配置for c++
- 【Unity】非MonoBehaviour子类的单例管理
- MyBatis使用大全(3)------XML配置文件
- 【趣题】【"竖着的"线段树】NKOJ 3726 史上最大值
- 微信js 上传多个照片IOS,只上传了最后一个
- HTML语法大全
- 90. Subsets II
- H.264量化参数QP和量化步长Qstep
- 数据分析利器 —— 列式储存数据库
- LinuxC编程实战学习——第六章文件操作