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

【Unity程序技巧】Unity中的单例模式的运用

在这里插入图片描述


👨‍💻个人主页:@元宇宙-秩沅

👨‍💻 hallo 欢迎 点赞👍 收藏⭐ 留言📝 加关注✅!

👨‍💻 本文由 秩沅 原创

👨‍💻 收录于专栏:Unity基础实战

🅰️



文章目录

    • 🅰️
    • 前言
    • 🎶(==1==)未继承Mono的单例模式
    • 🎶(==2==)通用单例模式的基类泛型模板
    • 🎶(==3==)继承Mono的单例模式
    • 🎶(==4==)继承Mono的单例模式的泛型模板
    • 🎶(==5==)单例模式的泛型模板自动添加
    • 🅰️


前言

菜鸟教程

“单例模式(Singleton Pattern)是 Java 中最简单的设计模式之一。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。
这种模式涉及到一个单一的类,该类负责创建自己的对象,同时确保只有单个对象被创建。这个类提供了一种访问其唯一的对象的方式,可以直接访问,不需要实例化该类的对象。
单例模式是一种创建型设计模式,它确保一个类只有一个实例,并提供了一个全局访问点来访问该实例。
注意:
1、单例类只能有一个实例。
2、单例类必须自己创建自己的唯一实例。
3、单例类必须给所有其他对象提供这一实例。”

  • 有错误的地方在于new 的部分
    在这里插入图片描述
    在这里插入图片描述

🎶(1未继承Mono的单例模式


  • 脚本:

public class  GameManagers
{private static GameManagers instance;public static GameManagers GetInstance(){if (instance == null) instance = new GameManagers();return instance;}
}

🎶(2通用单例模式的基类泛型模板


  • 脚本:
public class  GameManagers<T> where T : new()
{private static T instance;public static T GetInstance(){if (instance == null) instance = new T();return instance;}
}
//继承单例模式泛型模板的基类
public class BaseContorl : GameManagers<BaseContorl>
{}

🎶(3继承Mono的单例模式


  • 脚本:
public class Single : MonoBehaviour
{private static Single singleControl;public static Single SingleControl => singleControl;private void Awake(){singleControl = this;}
}
  • 存在的问题

不要在此处new了

在这里插入图片描述


🎶(4继承Mono的单例模式的泛型模板


  • 脚本:
public class SingleBase<T> : MonoBehaviour where T : MonoBehaviour
{private static T singleControl;public static T SingleControl => singleControl;//保护类型的虚函数,可供子类重写 protected virtual  void Awake(){singleControl = this as T;}
}//当子类继承单例模式的泛型模板的时候
public class GameContorls : SingleBase<GameContorls>
{protected override void Awake(){//子类需要要重写,因为示例返回需要执行base.Awake();}
}
  • 缺点:

🎶(5单例模式的泛型模板自动添加


  • 之前的那种模式,当我们连续把单例模式脚本拖拽两次就会破坏单例模式的唯一性
  • 避免了手动拖拽脚本才可以激活单例模式 ,自动添加单例模式,想用就直接调用方法
public class SingleBase<T> : MonoBehaviour where T : MonoBehaviour
{private static T instance;public static T Geteinstance(){if (instance == null){//用代码创建一个新对象并且添加单例模式脚本GameObject obj = new GameObject();//设置对象的名字为脚本的名字obj.name = typeof(T).ToString();//instance就等于添加的这个脚本instance = obj.AddComponent<T>();//为了保证换场景的时候单例模式还存在DontDestroyOnLoad(obj);}return instance;}
}

🅰️


⭐【Unityc#专题篇】之c#进阶篇】

⭐【Unityc#专题篇】之c#核心篇】

⭐【Unityc#专题篇】之c#基础篇】

⭐【Unity-c#专题篇】之c#入门篇】

【Unityc#专题篇】—进阶章题单实践练习

⭐【Unityc#专题篇】—基础章题单实践练习

【Unityc#专题篇】—核心章题单实践练习


你们的点赞👍 收藏⭐ 留言📝 关注✅是我持续创作,输出优质内容的最大动力!


在这里插入图片描述


相关文章:

【Unity程序技巧】Unity中的单例模式的运用

&#x1f468;‍&#x1f4bb;个人主页&#xff1a;元宇宙-秩沅 &#x1f468;‍&#x1f4bb; hallo 欢迎 点赞&#x1f44d; 收藏⭐ 留言&#x1f4dd; 加关注✅! &#x1f468;‍&#x1f4bb; 本文由 秩沅 原创 &#x1f468;‍&#x1f4bb; 收录于专栏&#xff1a;Uni…...

java leetcodetop100 (3,4 )最长连续数列,移动零

top3 最长连续数列 给定一个未排序的整数数组 nums &#xff0c;找出数字连续的最长序列&#xff08;不要求序列元素在原数组中连续&#xff09;的长度。 * * 请你设计并实现时间复杂度为 O(n) 的算法解决此问题。 * * * * 示例 1&#xff1a; * * 输入&#xff1a;nums [100,…...

用Vite从零到一创建React+ts项目

方式一&#xff1a;使用create-react-app命令创建项目 1、使用以下命令初始化一个空的npm 项目 npm init -y 2、输入以下命令安装React npm i create-react-app ps:如果失败的话尝试&#xff08;1&#xff1a;使用管理员身份执行命令&#xff08;2&#xff1a;切换镜像重…...

HTTP状态码301(永久重定向)不同Web服务器的配置方法

文章目录 301状态码通常在那些情况下使用301永久重定向配置Nginx配置301永久重定向Windows配置IIS301永久重定向PHP下的301重定向Apache服务器实现301重定向 301重定向是否违反相关法规&#xff1f;推荐阅读 当用户或搜索引擎向服务器发出浏览请求时&#xff0c;服务器返回的HT…...

vue-element-admin项目部署 nginx动态代理 含Docker部署、 Jenkins构建

介绍三种方式&#xff1a; 1.直接部署到nginx中 2.用nginx docker镜像部署 3.使用Jenkins构建 1.直接用nginx部署 vue-element-admin项目下有两个.env文件&#xff0c;.env.production是生产环境的&#xff0c;.env.developpment是开发环境的 vue-element-admin默认用的是mock数…...

使用Python来写模拟Xshell实现远程命令执行与交互

一、模块 这里使用的是 paramiko带三方库 pip install paramiko二、效果图 三、代码实现&#xff08;这里的IP&#xff0c;用户名&#xff0c;密码修改为自己对应服务器的&#xff09; import paramiko import timeclass Linux(object):# 参数初始化def __init__(self, ip, us…...

mybatis 数据库字段为空or为空串 忽略条件过滤, 不为空且不为空串时才需nameParam过滤条件

name未配置视为不考虑name条件 select * from user where (( (ISNULL(name)) OR (name) ) OR name #{user.nameParam} ) 三个or语句 推荐这个 select * from user where ISNULL(name) OR name OR name #{user.nameParam} select * from user where ISNULL(name) OR …...

【玩玩Vue】通过vue-store实现枚举管理,用于下拉选项和中英文翻译等

原文作者&#xff1a;我辈李想 版权声明&#xff1a;文章原创&#xff0c;转载时请务必加上原文超链接、作者信息和本声明。 文章目录 一、store基础用法1.在src下新建store文件夹&#xff0c;在store下新建module文件夹2.在module下新建enums.js文件3.在store下新建getters.js…...

ISCSI:后端卷以LVM 的方式配置 ISCSI 目标启动器

写在前面 准备考试整理相关笔记博文内容涉及使用 LVM 做ISCSI 目标后端块存储 Demo理解不足小伙伴帮忙指正 对每个人而言&#xff0c;真正的职责只有一个&#xff1a;找到自我。然后在心中坚守其一生&#xff0c;全心全意&#xff0c;永不停息。所有其它的路都是不完整的&#…...

八公山豆腐发展现状与销售对策研究

1.引言 八公山豆腐作为中国传统特色食品之一&#xff0c;一直以来备受人们的喜爱。然而&#xff0c;在现代社会中&#xff0c;由于消费者对于营养健康的追求以及市场竞争的加剧&#xff0c;八公山豆腐的市场份额逐渐缩小。因此&#xff0c;为了更好地推广和发展八公山豆腐&…...

排序算法-插入排序

属性 当插入第i(i>1)个元素时&#xff0c;前面的array[0],array[1],…,array[i-1]已经排好序&#xff0c;此时用array[i]的排序码与array[i1],array[i-2],…的排序码顺序进行比较&#xff0c;找到插入位置即将array[i]插入&#xff0c;原来位置上的元素顺序后移 直接插入排序…...

多位数按键操作(闪烁)数码管显示

/*----------------------------------------------- 内容&#xff1a;按键加减数字&#xff0c;多个数码管显示 ------------------------------------------------*/ #include<reg52.h> //包含头文件&#xff0c;一般情况不需要改动&#xff0c;头文件包含特殊功能寄存…...

MyEclipse项目导入与导出

一、项目导出 1、右键选择项目名称&#xff0c;弹出菜单中选择“export”&#xff0c;如下图所示 2、选择“恶心“export”&#xff0c;弹出菜单如下&#xff1b;在“General“选项中&#xff0c;选择“File System”选项 3、点击“next”&#xff0c;进入保存位置选择界面&am…...

ArrayList和LinkedList

最近在刷回溯算法时&#xff0c;遇见了List<Integer> A new ArrayList<>(); LinkedList<Integer> B new LinkedList<>();这类型的表达方式 很好奇的问题是&#xff1a; 1、List<Integer> A new ArrayList<>();为什么是正确的写法 2…...

Linux 配置 Nginx 服务完整详细版

目录 前言 配置Nginx监听端口和服务器块 # 防DDoS配置 # 日志配置 # 设置服务器块 监听端口 网站根目录 默认文件 静态文件目录 图像文件目录 # 自定义错误页面 # 反向代理配置 # 配置SSL/TLS 1、获取SSL/TLS证书 2、安装证书 3、配置SSL/TLS # 配置SSL协议版本…...

Python实现猎人猎物优化算法(HPO)优化LightGBM回归模型(LGBMRegressor算法)项目实战

说明&#xff1a;这是一个机器学习实战项目&#xff08;附带数据代码文档视频讲解&#xff09;&#xff0c;如需数据代码文档视频讲解可以直接到文章最后获取。 1.项目背景 猎人猎物优化搜索算法(Hunter–prey optimizer, HPO)是由Naruei& Keynia于2022年提出的一种最新的…...

无涯教程-JavaScript - ODD函数

描述 ODD函数返回四舍五入到最接近的奇数整数的数字。 ODD函数是Excel中的15个舍入函数之一。 语法 ODD (number)争论 Argument描述Required/OptionalNumberThe value to round.Required Notes 无论数字的符号如何,值都将从零舍入到下一个奇数。如果number是一个奇数整数…...

Easyui里的datagrid嵌入select下拉框

问题&#xff1a; 想使用datagird里嵌入select下拉框&#xff0c;并在提交form表单时获取datagrid选中的每行数据里的每个下拉框选中的值。 解决方案&#xff1a; 其中economicIssuesSelect使用下拉框&#xff0c;重点关注 initEconomicIssues(row)方法。这里的方法需要传递ro…...

计算机专业毕业设计项目推荐03-Wiki系统设计与实现(JavaSpring+Vue+Mysql)

Wiki系统设计与实现&#xff08;JavaSpringVueMysql&#xff09; **介绍****系统总体开发情况-功能模块****各部分模块实现** 介绍 本系列(后期可能博主会统一为专栏)博文献给即将毕业的计算机专业同学们,因为博主自身本科和硕士也是科班出生,所以也比较了解计算机专业的毕业设…...

微服务的艺术:构建可扩展和弹性的分布式应用

文章目录 什么是微服务架构&#xff1f;微服务的设计原则1. 基于业务边界划分服务2. 松耦合和强内聚3. 自动化测试和部署4. 监控和日志5. 弹性设计 微服务的实施细节1. 服务发现示例代码&#xff1a;使用Consul进行服务发现 2. 负载均衡示例代码&#xff1a;Nginx配置负载均衡 …...

在PHP8中对数组进行排序-PHP8知识详解

在php8中&#xff0c;提供了丰富的排序函数&#xff0c;可以对数组进行排序操作。常见的排序函数如下几个&#xff1a;sort() 函数、rsort() 函数、asort() 函数、arsort() 函数、ksort() 函数、krsort() 函数、natsort()函数和natcascsort()函数。 1、sort() 函数&#xff1a;…...

Redis混合模式持久化原理

前言 前面文章中我们也介绍过Redis的持久化方式有两种&#xff1a;rdb持久化和aof持久化&#xff0c;具体详情可查看之前文章redis持久化。rdb持久化还是aof持久化它们都有各自的缺点。 rdb和aof缺点 rdb持久化&#xff1a;由于是定期对内存数据快照进行持久化&#xff0c;因此…...

《BPF Performance Tools —— 洞悉Linux系统和应用性能》学习笔记 —— 第一章 介绍(2)

接前一篇文章&#xff1a;《BPF Performance Tools —— 洞悉Linux系统和应用性能》学习笔记 —— 第一章 介绍&#xff08;1&#xff09; 1.2 Tracing、Snooping、Sampling、Profiling和Observability是什么&#xff1f; 这些都是用于对分析技术和工具进行分类的术语。 Trac…...

【计算机网络】网络编程接口 Socket API 解读(7)

Socket 是网络协议栈暴露给编程人员的 API&#xff0c;相比复杂的计算机网络协议&#xff0c;API 对关键操作和配置数据进行了抽象&#xff0c;简化了程序编程。 本文讲述的 socket 内容源自 Linux man。本文主要对各 API 进行详细介绍&#xff0c;从而更好的理解 socket 编程。…...

crypto++下载、安装(VS2017)及加解密使用

crpto 下载按个人喜好下载&#xff0c;我使用了图中框选的8.8.0 Release.解压 安装打开修改以适应本机配置整理至标准库 调用加解密使用 Crypto&#xff08;也称为Crypto Library或Crypto STL&#xff09;是一个C密码学库&#xff0c;它提供了各种密码学算法和安全编程工具&…...

R语言画图

简单记录一下 plot(lad_profile_relative$lad, lad_profile_relative$height, type"l", lwd1.5, xlabexpression(paste("LAD ", "(", m^2, m^-3, ")" )), ylab"Height (m)")X轴数据&#xff0c; Y轴数据 type, 标记类型 lw…...

redis 核心数据结构

一、简述 redis是一个开源的使用C语言编写的一个kv存储系统&#xff0c;是一个速度非常快的非关系远程内存数据库。它支持包括String、List、Set、Zset、hash五种数据结构。 除此之外&#xff0c;通过复制、持久化和客户端分片等特性&#xff0c;用户可以很方便地将redis扩展…...

RabbitMQ消息可靠性(一)-- 生产者消息确认

前言 在项目中&#xff0c;引入了RabbitMQ这一中间件&#xff0c;必然也需要在业务中增加对数据安全性的一层考虑&#xff0c;来保证RabbitMQ消息的可靠性&#xff0c;否则一个个消息丢失可能导致整个业务的数据出现不一致等问题&#xff0c;对系统带来巨大的影响&#xff0c;…...

9 种方法使用 Amazon CodeWhisperer 快速构建应用

Amazon CodeWhisperer 是一款很赞的生成式人工智能编程工具。自从在工作中使用了 CodeWhisperer&#xff0c;我发现不仅代码编译的效率有所提高&#xff0c;应用开发的工作也变得快乐起来。然而&#xff0c;任何生成式 AI 工具的有效学习都需要初学者要有接受新工作方式的心态和…...

性能测试-性能工程落地的4个阶段(21)

性能工程按照不同的内容和目的划分为4个阶段,分别是线下单系统压测分析阶段、线下全链路压测分析阶段、生产只读业务压测及容量评估阶段、生产读写业务全链路压测及容量评估阶段。(也可以理解为一个企业性能测试体系的发展阶段) 线下单系统压测分析阶段 针对单系统的性能…...

国外英文性网站/成都百度推广联系方式

微信小程序怎么做呢&#xff1f;离不开小程序开发工具。利用这些工具&#xff0c;你可以根据需求生成不同的小程序。不过&#xff0c;不同小程序工具的质量、制作难度都有不小差异&#xff0c;因此我们选择需慎重。那么小程序开发工具有哪些&#xff1f;这些微信小程序开发工具…...

怎么给公司做网站/推广普通话的内容简短

原文地址&#xff1a;http://blog.csdn.net/asmcvc/article/details/55047842/ 概述 使用HOOK方案主要是在分析的时候会经常用到&#xff0c;虽然二次打包重新修改代码也可以做到&#xff0c;但是一方面效率低&#xff0c;另一方面如果APP有校验的逻辑就需要进一步绕过&#xf…...

给别人生日做网站/滁州网站seo

MI&#xff1a;有害程序事件&#xff08;Malware Incidents&#xff09; CVI&#xff1a;计算机病毒事件&#xff08;Computer Virus Incidents&#xff09; WI&#xff1a;蠕虫事件&#xff08;Worms Incidents&#xff09; THI&#xff1a;特洛伊木马事件&#xff08;Trojan …...

企业网站管理系统/服务营销的概念

2017年&#xff0c;是业内公认的分布式光伏爆发年。近有0.42元/度的补贴保持不变&#xff0c;远有“十三五”规划60GW装机规模&#xff0c;从政策补贴到市场规划&#xff0c;分布式光伏都收到红利。 根据业内预测&#xff0c;2017年光伏装机容量约为40GW&#xff0c;家用光伏市…...

wordpress 顶 踩 插件/深圳企业网站制作公司

本节书摘来自异步社区《移动App测试的22条军规》一书中的第23章&#xff0c;第9节测试微信App能否适应不同设备的不同用户界面&#xff0c;作者 黄勇&#xff0c;更多章节内容可以访问云栖社区“异步社区”公众号查看 23.9 测试微信App能否适应不同设备的不同用户界面测试App是…...

西安做网站设计的公司/百度搜索排行

网关,网关工作原理是什么?网关_1顾名思义&#xff0c;网关(Gateway)就是一个网络连接到另一个网络的“关口”。大家都知道&#xff0c;从一个房间走到另一个房间&#xff0c;必然要经过一扇门。同样&#xff0c;从一个网络向另一个网络发送信息&#xff0c;也必须经过一道“关…...