当前位置: 首页 > news >正文

黄冈如何创建免费网站做短视频的能跟几个网站签约

黄冈如何创建免费网站,做短视频的能跟几个网站签约,长沙seo外包平台,专业网专业网站建设单例模式基类 构造函数私有化,防止外部创建对象 提供一个属性给外部访问,这个属性就相当于是这个类的唯一对象 分为懒汉模式和饿汉模式 不继承MonoBehaviour的单例模式 public static MyUiManager Instance {get{if (instance null){instance new …

单例模式基类

构造函数私有化,防止外部创建对象

提供一个属性给外部访问,这个属性就相当于是这个类的唯一对象

分为懒汉模式和饿汉模式

不继承MonoBehaviour的单例模式

 public static MyUiManager Instance {get{if (instance == null){instance = new MyUiManager();}return instance;}}

继承MonoBehaviour的单例模式

public class MyUiManager : MonoBehaviour
{private MyUiManager() { }private static MyUiManager instance;public static MyUiManager Instance {get{if (instance == null){instance = FindObjectOfType<MyUiManager>();}return instance;}}
}

 instance = FindObjectOfType<MyUiManager>();

 继承  MonoBehaviour  的单例是会挂在游戏场景上的,需要在游戏场景身上寻找到然后赋值

继承与不继承两者初始化的方式不同

继承MonoBehaviour的自动单例模式

if (instance == null){instance = FindObjectOfType<MyUIManager>();//游戏场景中没有创建物体挂在脚本,写代码来自动做这些事情if (instance == null){GameObject go = new GameObject("MyUIManager");  //创建游戏对象instance = go.AddComponent<MyUIManager>();  //挂载脚本到游戏对象身上}}

 继承MonoBehaviour的单例模式切换场景的问题

if (instance == null){GameObject go = new GameObject("MyUIManager");  //创建游戏对象instance = go.AddComponent<MyUIManager>();  //挂载脚本到游戏对象身上}DontDestroyOnLoad(instance);   //让游戏对象切换场景时不销毁

不继承MonoBehaviour的单例模式基类

/// <summary>
/// 不继承MonoBehaviour 的单例模式基类
/// 作用:继承了这个这个类的类自带单例模式
/// </summary>
public class SingletonPatternBase<T> where T: SingletonPatternBase<T>
{private static T instance;public static T Instance{get{if (instance == null){//where 里面要求含有无参构造函数  where T :new()//....单例怎么能有无参构造函数呢//instance = new T();//或者利用反射调用无参构造方法来构造instance = Activator.CreateInstance(typeof(T), true) as T;}return instance;}}//构造方法私有化  private 的话子类也无法继承对象,所以使用protectedprotected SingletonPatternBase() { }}

继承MonoBehaviour的单例模式基类

using System.Collections;
using System.Collections.Generic;
using UnityEngine;public class SingletonMonoAutoBase<T> : MonoBehaviour where T:MonoBehaviour
{protected SingletonMonoAutoBase() { }private static T instance;public static T Instance{get{if (instance == null){instance = FindObjectOfType<T>();if (instance == null){GameObject go = new GameObject(typeof(T).Name);  //创建游戏对象instance = go.AddComponent<T>();  //挂载脚本到游戏对象身上}}return instance;}}
}

继承MonoBehaviour的单例模式基类切换场景问题

OnDestroy方法中访问单例对象的问题

OnDestroy 方法执行的时候资源会清空,instance 检测为空,自动生成新对象,所以报错

解决办法:

    //记录单例对象是否存在,用于防止OnDestory方法中访问单例对象报错
    public static bool isExisted { get; private set; } = false;

protected virtual void OnDestroy()
    {   
        isExisted = false; 
    } 

 多线程访问单例时会遇到的问题

 操作系统  线程锁问题

//线程锁。当多线程访问时,同一时刻只允许一个线程访问private static object locker = new object();//volatile关键字修饰的字段,当多个线程都对它进行修改时,可以确保这个字段在任何时刻呈现的都是最新的值private volatile static T instance;public  static T Instance{get{if (instance == null){lock(locker){if (instance == null){//或者利用反射调用无参构造方法来构造instance = Activator.CreateInstance(typeof(T), true) as T;}}}return instance;}}

http://www.yayakq.cn/news/35113/

相关文章:

  • 自己创业做网站jarvis主题wordpress
  • 小说网站架构个人网站免费注册
  • 个人工作室网站源码带后台wordpress 小说 主题
  • 邱县seo整站排名长沙米拓建站
  • 网站分析怎么做的建设一个网站需要注意哪些要求
  • 为什么我的网站无法访问怎么建网站平台卖东西
  • 手机网站的做门户网站建设与管理办法
  • 单人做网站需要掌握哪些知识东莞银行
  • wordpress邮件客户端哈尔滨seo优化客户
  • 网站转化低的原因做一个公司网站
  • 网站制作书籍推荐wordpress post
  • 保定专门做网站的公司集团网站建设管理制度
  • 怎么做网站排名会更好怎样做代刷网站长
  • 网页设计精选网站建筑工程项目简介
  • 公众号免费模板网站wordpress分享js代码
  • 上海做网站定制网站开发开源代码
  • 网站设计内容包括报价单模板表格
  • 网站如何做线上和线下推广dw网页制作怎么插mp4视频
  • 杭州专业网站做网站名词
  • 手机社交网站模板泸县做网站公司
  • 设计个网站多少钱上海app开发制作
  • 北京住房与城乡建设部网站临海市住房和城乡建设规划局 网站
  • 南昌好的做网站的公司付费推广网站
  • 织梦网站程序5.7首页模板上海网站制作建设
  • 安徽省建设工程造价协会网站免费网站模板带后台下载
  • 久其软件公司网站深圳科技公司排行榜
  • 网站模板 北京公司专业制作简历收费
  • 江苏建新建设集团有限公司网站国内对企业网站开发的研究
  • 2018年做网站赚钱吗建筑行业网站模板
  • 网站评估做的好不好做网站工商局要不要备案呢