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

免费网站部署如何在租用的服务器上部署自己的网站 mysql

免费网站部署,如何在租用的服务器上部署自己的网站 mysql,织梦技术个人网站模板,如何去推广一个网站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/96895/

相关文章:

  • 手机怎样下载安装建设银行网站dnf辅助源码论坛
  • 台州网站制作服务搜索引擎优化是做什么
  • 网站的推广方式包括友情链接检测方法
  • 上海网站建设小程序开发外贸网站模板免费
  • 常州做网站公司有哪些厦门网站建设推广哪家好
  • 专业做网站公司 前景美仑-专门做服装的网站
  • 品牌做网站一体化企业管理软件
  • 房管局 网站做房查外汇网站怎么做优外汇网站
  • 吉安网站建设优化服务模板免费下载网站
  • 建设银行网站的目的是什么微信运营是干嘛的
  • 手机建网站详细步骤杭州seo推广服务
  • 雍鑫建设集团官方网站可以做软件的网站
  • 相册特效手机网站广东网页空间分销
  • 哪个网站可以做创意短视频wordpress个人支付
  • 网站开发需要哪些人才app推广服务部
  • 辽宁建设官方网站seo内容优化是什么
  • 青岛专业做商业房的网站贵阳网站制作系统
  • 公司设计网站需要注意哪些教着做美食的网站
  • 网站开发需要文章写的好吗建设工程规划许可证公示网站
  • 阿勒泰建设招聘网站id怎样转wordpress
  • 亚马逊网站推广怎么做在阿里云备案网站通过
  • 企查查企业信息查询网站公司网站建设包括
  • 手机端网站的建设wordpress投稿积分
  • 什么是网络营销型网站443是端口网站建设
  • 18互联网站做网站程序网站构建建设
  • 秦皇岛网站建设报价如何在wordpress中添加背景音乐
  • 天津信息港网站关键词优化
  • 慧谷网站开发文档做房产中介搜房源的网站
  • 做图片网站 服务器咸阳做网站托管
  • 适合推广的网站怎么制作一张自己的图片