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

毕业做网站运营好吗百度seo优化多少钱

毕业做网站运营好吗,百度seo优化多少钱,阿里巴巴国际站运营,品牌网站建设磐石网络优等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.ds6.com.cn/news/79936.html

相关文章:

  • 济南企业型网站竞价托管外包公司
  • 高手做网站百度关键词seo公司
  • 网站建设及运营个人心得推广平台排名
  • 收录好的网站怎么联系百度人工服务
  • 设计网站首页1google浏览器官方下载
  • 有没有专门做商铺招商的网站seo系统是什么
  • 为澳门赌场做网站维护杭州优化外包哪里好
  • wordpress远方的雪百度seo关键词优化排名
  • 2014网站备案app怎么开发出来的
  • 免费自助建站软件2345浏览器下载安装
  • 网站建设交流论坛网络seo关键词优化技巧
  • 企业营销型网站团队百度百度地图
  • 借钱软件推广微信hyhyk1seo关键词排名技巧
  • 邯郸网站建设安联网络公司如何进行线上推广
  • 国外引流推广平台郑州官网关键词优化公司
  • 资讯网站的好处互联网平台推广怎么做
  • 男人和男人做爰漫画网站seo百度推广
  • 南宁公司网站建设新闻头条今日要闻军事
  • 怎样做cms电影网站赚钱长沙网站推广排名
  • 做网站 用什么做数据库最好新产品市场推广方案
  • 公司做网站比较好的平台百度网盘搜索引擎官方入口
  • 轻松筹 做的网站价格怎么优化网站关键词排名
  • 做一个公司网站的费用做个公司网站一般需要多少钱
  • 个人网站建设的国外文献综述免费模板素材网站
  • 梅州网站建设商丘网站建设公司
  • 基于php的网站开发百度seo点击软件
  • 做网站 兼职seo优化多少钱
  • 客服外包10大平台小吴seo博客
  • 广东省住房和建设委员会网站百度关键词工具
  • 外贸seo网站推广推广网站多少钱