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

成都网站建设哪家专业制作一个网站大概需要多少钱

成都网站建设哪家专业,制作一个网站大概需要多少钱,施工企业附属加工厂广联达,用asp做网站需要安装什么软件单例模式基类 构造函数私有化,防止外部创建对象 提供一个属性给外部访问,这个属性就相当于是这个类的唯一对象 分为懒汉模式和饿汉模式 不继承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.hkea.cn/news/487700/

相关文章:

  • 娄底网站优化自建网站平台有哪些
  • 做网站需要多少兆空间wix网站制作
  • 哪些网站教做生物实验今日新闻联播
  • 铜川市住房和城乡建设局网站信息流广告哪个平台好
  • 太原市建设交易中心网站首页百度手机助手app安卓版官方下载
  • 昆山网站建设网站建设郑州网络推广哪个好
  • 瑜伽网站设计国外推广网站
  • 什么网站做国外批发百度推广自己怎么做
  • 网站管理工具百度推广可以自己开户吗
  • 三水网站制作中山做网站推广公司
  • ysl网站设计论文郑州seo地址
  • 做食品的网站设计要注意片多多可以免费看电视剧吗
  • 网站排名推广自己怎么做长沙seo代理商
  • 手机网站改版公司加盟关键词优化排名查询
  • html5 图片网站建设企业网站多少钱
  • 企业网站定制开发流程网络营销的概念及特点
  • 做火影网站背景图农村电商平台有哪些
  • 国内html5网站建设seo兼职工资一般多少
  • 青海西宁网站建设公司百度网络推广
  • 服装公司网站设计百度站长收录入口
  • 做搜索关键词任务网站网站维护是什么意思
  • 2018什么做网站百度网盘网页版入口
  • 深圳福田大型商城网站建设石家庄最新疫情最新消息
  • 网站版面结构chatgpt 网站
  • 网站后期推广是谁来做广州百度推广开户
  • 不上此网站枉做男人免费制作网站平台
  • 防红短链接生成佛山抖音seo
  • 网站建设php带数据库模板站长工具四叶草
  • 做网站客户拖着不验收店铺推广渠道有哪些方式
  • 站群系统哪个好用怎样进行seo推广