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

赣州网站建设哪家好做威尼斯网站代理算是违法吗

赣州网站建设哪家好,做威尼斯网站代理算是违法吗,重庆一般建一个网站需要多少钱,抖音代运营合作协议Unity3D 泛型单例 单例模式 单例模式是一种创建型设计模式,能够保证一个类只有一个实例,提供访问实例的全局节点。 通常会把一些管理类设置成单例,例如 GameManager、UIManager 等,可以很方便地使用这些管理类单例,…

Unity3D 泛型单例

单例模式

单例模式是一种创建型设计模式,能够保证一个类只有一个实例,提供访问实例的全局节点。

通常会把一些管理类设置成单例,例如 GameManagerUIManager 等,可以很方便地使用这些管理类单例,存储变量和调用接口。

手动挂载的泛型单例

创建 SingletonMono.cs 脚本,在类名后面添加泛型和约束,定义泛型变量,并且在 Awake 方法中对变量进行赋值。

这里的 Awake 方法是虚方法,当有管理类继承这个 SingletonMono 时,可以重写 Awake 方法进行额外的操作。

using System.Collections;
using System.Collections.Generic;
using UnityEngine;public class SingletonMono<T> : MonoBehaviour where T : MonoBehaviour
{static T instance;  // 私有静态实例public static T Instance { get { return instance; } }  // 公开实例属性protected virtual void Awake(){if (instance == null){instance = this as T;// 切换场景时不销毁这个游戏物体DontDestroyOnLoad(gameObject);}else{// 切换场景时,如果场景里有单例游戏物体,在已经创建单例的情况下,销毁多余的游戏物体Destroy(gameObject);}}
}

创建 GameManager.cs 脚本,继承 SingletonMono 这个类。

using System.Collections;
using System.Collections.Generic;
using UnityEngine;public class GameManager : SingletonMono<GameManager>
{public int score;protected override void Awake(){// 调用基类的 Awake 方法base.Awake();// 可以进行额外的初始化操作score = 0;}void Start(){}void Update(){}
}

在场景中创建游戏物体,把 GameManager 脚本手动挂载到游戏物体上。

手动挂载

创建 SingletonTest.cs 脚本,简单使用一下 GameManager.Instance 单例的变量。

using System.Collections;
using System.Collections.Generic;
using UnityEngine;public class SingletonTest : MonoBehaviour
{void Start(){int score = GameManager.Instance.score;Debug.Log($"score = {score}");}
}

运行游戏,可以看到 GameManagerDontDestroyOnLoad 场景中,可以获取到 score 变量进行打印。

使用单例

自动挂载的泛型单例

创建 SingletonMonoAuto.cs 脚本,在类名后面添加泛型和约束,定义泛型变量。

因为它并不需要在场景中手动创建游戏物体,也不会通过 Awake 方法对变量进行赋值。

所以在获取 Instance 属性时,如果属性为空,就通过代码创建一个不会销毁的游戏物体,并自动挂载单例组件。

using System.Collections;
using System.Collections.Generic;
using UnityEngine;public class SingletonMonoAuto<T> : MonoBehaviour where T : MonoBehaviour
{static T instance;  // 私有静态实例// 公开实例属性public static T Instance{get{if (instance == null){// 创建一个新的游戏物体GameObject obj = new GameObject();// 根据类型进行重命名obj.name = typeof(T).ToString();// 自动挂载单例组件instance = obj.AddComponent<T>();// 不可销毁DontDestroyOnLoad(obj);}// 返回实例return instance;}}
}

创建一个 UIManager.cs 脚本,继承 SingletonMonoAuto 这个类。

using System.Collections;
using System.Collections.Generic;
using UnityEngine;public class UIManager : SingletonMonoAuto<UIManager>
{void Awake(){Debug.Log("初始化 UIManager");}void Start(){}void Update(){}
}

SingletonTest.cs 脚本,简单使用一下 UIManager.Instance 单例。

using System.Collections;
using System.Collections.Generic;
using UnityEngine;public class SingletonTest : MonoBehaviour
{void Start(){int score = GameManager.Instance.score;Debug.Log($"score = {score}");UIManager uiManager = UIManager.Instance;}
}

运行游戏,可以看到 UIManagerDontDestroyOnLoad 场景中自动创建。

自动挂载

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

相关文章:

  • 做艺术品展览的网站国内做的比较好的跨境电商网站
  • 网站虚拟主机免备案免费网站推广大
  • 上海长宁区网站建设做网站的分辨率
  • 如何做网站代码网站设计是什么意思
  • 简单设计网站免费申请商城网站
  • 药膳网站建设的目的网页设计基础教程结课论文
  • 做餐饮酒店网站做2手物品通过网站去卖掉好做吗
  • 做电影下载网站赚钱花垣做网站
  • 免费开源建站教学网站网站预订模板怎么做
  • 天津网站建设zhy88淘宝买cdk自己做网站
  • 个人类网站类网站仿站 做网站
  • 网站菜单怎么做wordpress 判断加密
  • 整套html企业网站模板h5制作微信小程序
  • 网站设计的意义莆田seo培训
  • 一些免费的网站合适做服装的国际网站
  • 连云港网站建设哪家好网站建设公司做销售好不好?
  • 菏泽网站建设多少钱wamp下安装wordpress
  • 上海网站设计制作报价网站留言板 html
  • 佛山网吧什么时候恢复营业网站关键词优化怎么做的
  • 外网图片素材网站wordpress 管理密码忘记
  • 中文个人网站模板下载网络推广软件排行榜
  • 河南整站百度快照优化网站无法访问
  • 南京行业门户网站上海关键词推广
  • vue 做网站建立网站需要多少钱?
  • 福建省住房和建设厅网站可以全部免费观看的平台
  • 建立网站需要注册公司吗网站流量统计分析工具
  • 网站域名查询系统龙岩市官方网站
  • 建站 wordpress邢台网站建设服务商
  • 建立网站需要哪些步骤do_action wordpress
  • 马克 扎克伯格大学做的网站做网站优化有什么方法