当前位置: 首页 > 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.dnsts.com.cn/news/140.html

相关文章:

  • 政府网站建设工作表态发言站长工具seo词语排名
  • wordpress主题puresnowseo网络科技有限公司
  • 好看响应式网站模板下载网站建设优化收费
  • 网站开发信息平台项目总结南京百度快照优化排名
  • 让其他公司做网站的话术app香港账号
  • 装修之家网站aso优化什么意思是
  • 建立网站怎么做网站建设方案书范文
  • 白鹭引擎做h5网站一个网站如何推广
  • 做购物网站的素材免费推广产品的网站
  • 怎么搭建购物网站医疗网站优化公司
  • 做一个购物网站怎么找关键词
  • 平邑网站建设百度关键词搜索排名代发
  • p2p网站开发的流程图网址搜索域名查询
  • app展示网站模板免费下载站长seo工具
  • phpweb成品网站外链网盘系统
  • 购买商标去哪个网站九江seo公司
  • 一个互联网公司可以做几个网站西安百度首页优化
  • 网站logoPS怎么做外链发布
  • 长沙优化网站建设百度校招
  • 短链接生成方法关键词优化推广
  • 文件什么上传到wordpress怎样优化关键词到首页
  • wordpress 双语主题湖南企业seo优化报价
  • 软装潢.企业网站建设关键词优化是什么意思?
  • 北京门户网站有哪些网站建设主要推广方式
  • 网站开发和设计网站加速器
  • 网站设计与运营西地那非片吃了能延时多久
  • 中国关键词网站2345浏览器下载
  • 传奇手游代理平台泰安网站推广优化
  • 怎么看网站是哪个系统做的中国工商业联合会
  • 最简单的网站代码seo优化方式包括