unity, 什么时候用静态类,什么时候用单例

如果没有成员变量,或者成员变量都是常量,则用静态类。

如果有成员变量,则用单例。(以便让成员变量有初始化机会)。

//静态类

public class CmyFuncs{

  public float m_pi=3.1415926;

  static float calculateCircleArea(float r){

    return r*r*m_pi;

  }

  ...

}

//单例

public class CmyUtil {
    static private CmyUtil m_instance=null;
   public CmyObj m_myObj;
    static public CmyUtil sharedInstance(){
        if (m_instance == null) {
            m_instance=new CmyUtil();
            m_instance.init();
        }
        return m_instance;
    }
    void init(){
    m_myObj.init();
    }

   ...
}

时间: 2024-11-05 16:04:25

unity, 什么时候用静态类,什么时候用单例的相关文章

unity泛型单例

参考自:http://wiki.unity3d.com/index.php/Singleton 我们要使用Unity3d在Object类中提供了一个静态函数 :Object.DontDestroyOnLoad (Object target) . 加载新场景的时候使单例对象不被自动销毁 作为 MonoBehaviour 因为我们可能需要协同程序,所以使用 Lock同步 用法示例 MyClass.cs public class MyClass : MonoBehaviour { void Awake

静态类和单例区别

近期在看android的网络访问类的时候发现有些人用静态类来封装,有些人用单例来封装,突然发现,两种都可以,那究竟使用哪种好呢?这个答案并非是绝对的,两种都可以.就像是抽象类和接口一样,其实很多情况两种方式都可以达到目的,就是看个人理解(抽象类和接口的区别看我的另外一篇文章 接口和抽象类区别).以下是个人的一些看法. 静态类就像是面向过程时代的方法与一样,是一个工具类,很少依赖其他对象或者资源,只是在面向对象的思想中,一定要用类,而不用像面向过程时代直接调用方法,所以用面向对象封装的特性,才用静

静态类和单例类

1.静态类一运行就会初始化.而单例类可以选择性的初始化,即延时初始化. 2.单例类可以在构造函数里面初始化很多东西.而静态类得写个静态方法来实现,并且还得触发该方法. 3.单例类可以多态.实现接口.而静态类不能. 总结: 到底什么时候使用单例类,什么时候使用静态类这要根据情况来定.如果考虑扩展.灵活性的话,使用单列类会比较好.而如果不需要扩展的完全可以使用静态类来实现.

馨予带你飞之unity中使用单例(二)

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

Unity Singleton 单例类(Unity3D开发之二十)

猴子原创,欢迎转载.转载请注明: 转载自Cocos2Der-CSDN,谢谢! 原文地址: http://blog.csdn.net/cocos2der/article/details/47335197 今天看到群里有朋友问unity单例的最佳实现方式,下面我我经常用的.贴出来供大家参考. 一.添加单例模板类 using UnityEngine; public class Singleton<T> : MonoBehaviour where T : MonoBehaviour { private

Unity 单例写法

https://www.cnblogs.com/SHOR/p/5192046.html 借鉴自:http://www.cnblogs.com/CodeCabin/p/unity_global_manager.html 实现复杂一些的全局控制,如切换游戏关卡等操作,更常用的方式是使用单例类.单例类的实现又分为两种: 继承自MonoBehaviour的单例类 纯C#的单例类 前者的优点是: 可以在Inspector中显示,便于赋值和查看变量等: 可以利用MonoBehaviour的接口: 可以使用C

【Unity】游戏中的单例

游戏中需要一些 GameObject(例如网络管理器) 在游戏的整个生命周期都存在,而且是以单例的形式存在. XGame 中实现这种单例的方式是,单例脚本都从 MonoSingle 类继承,MonoSingleton 的实现方法是在 Awake() 中调用DontDestroyOnLoad(gameObject);来保证单例. MonoSingleton类的实现代码: 1 /// <summary> 2 /// Generic Mono singleton. 3 /// </summar

基于unity的单例设计模式写法

设计模式有23中,都是为了解藕设计的.就先拿单例设计模式说说把.因为平常最起码你也得用到单例设计先弄一个泛型的单例模板代码如下: 1 //泛型的单例设计模式.项目中用的多 2 public class GameController<T> : MonoBehaviour where T :GameController<T> { 3 private static T _instance; 4 public static T Instance 5 { 6 get 7 { 8 if (_i

Unity单例

1.非Mono单例: 1 using System; 2 using System.Reflection; 3 using System.Collections.Generic; 4 5 public static class Singleton<T> where T : class 6 { 7 static volatile T _instance; 8 static object _lock = new object(); 9 10 static Singleton() 11 { 12 }