【100个 Unity小知识点】 | Unity中常用的几种单例写法_unity 单例写法-程序员宅基地

技术标签: Unity  Unity 100个实用技能  leetcode  单例模式  

Unity 小科普

老规矩,先介绍一下 Unity 的科普小知识:

  • Unity是 实时3D互动内容创作和运营平台 。
  • 包括游戏开发美术建筑汽车设计影视在内的所有创作者,借助 Unity 将创意变成现实。
  • Unity 平台提供一整套完善的软件解决方案,可用于创作、运营和变现任何实时互动的2D和3D内容,支持平台包括手机平板电脑PC游戏主机增强现实虚拟现实设备。
  • 也可以简单把 Unity 理解为一个游戏引擎,可以用来专业制作游戏

Unity 小知识点学习

Unity中常用的几种单例写法

单例模式(Singleton Pattern) 保证一个类仅有一个实例,并提供一个访问它的全局访问点

单例模式优点

  • 单例模式核心在于对于某个单例类,在系统中同时只存在唯一一个实例,并且该实例容易被外界所访问;
  • 意味着在内存中,只存在一个实例,减少了内存开销;

单例模式的写法细分的话写法有很多种,但是核心都差不多,下面总结了几种最常用的单例模式提供参考,直接套用即可!

第一种:在Unity中最普通的单例写法,在Awake中获取,使用的时候直接调用即可
    public static Singleton  instance;
    private void Awake()
    {
    
        instance = this;
    }
第二种:持久化的写法,第一种的拓展,这种方法相比较第一种更可靠。在找不到单例方法时新建一个物体防止被销毁,然后接着调用即可
    private static Singleton instance;
    private void Awake()
    {
    
        instance = this;
    }
    public static Singleton GetInstance
    {
    
       if(instance==null)
       {
    
           GameObject go = new GameObject("Singleton"); // 创建一个新的GameObject
         DontDestroyOnLoad(go);  // 防止被销毁
         _instance = go.AddComponent<Singleton>(); // 将实例挂载到GameObject上
       }
       return instance;
    }
第三种:可以不用挂载到场景中(),使用的时候直接调用
private static Singleton  instance;
public static Singleton  GetInstance()
{
    
  if(instance==null)
  {
    
  instance =new Singleton ();
  }
  return instance;
  }
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/zhangay1998/article/details/121608730

智能推荐

VS2017下dll和lib的使用_vsllb-程序员宅基地

文章浏览阅读3.8k次。前言最近开始认真掌握VS的各种操作,自然而然避不开dll和lib的使用,自己逛了逛CSDN和博客园,看了很多博客,但是并不是很让我满意,一方面是大多不符合我的环境(VS2017 Community),另一方面是太他妈复杂了,什么建成后又各种添加什么的,实在记不熟,所以以下是我的操作。说明如下:环境:VS2017 Community操作:同一个结局解决方案下一个exe项目,一个dll项目,一..._vsllb

MSYS2 更换国内源_msys2 mingw 64-bit替换源-程序员宅基地

文章浏览阅读1.6k次,点赞5次,收藏4次。文章目录MSYS2 更换国内源MSYS2 更换国内源使用默认的 MSYS2 源升级软件或是安装新软件的特别的慢。所以就翻了翻国内的几个开源软件的镜像库,发现中科大的库里就有 MSYS2。所以就研究了一下,给 MSYS2 添加了中科大的源。简单的说 msys64\etc\pacman.d 目录下有三个文件。mirrorlist.msysmirrorlist.mingw64mirrorlist.mingw32这三个文件记录了都有哪些源。下面把我添加之后的文件内容贴上来。首先是 mirrorlis_msys2 mingw 64-bit替换源

Stm8 串口重定向及问题解决_error[li009]: runtime model conflict: module xxexi-程序员宅基地

文章浏览阅读1.4k次。一,代码及其设置#include <stdio.h>int fputc(int ch, FILE *f)//Stm8005 重定向{ while (!(UART2->SR&0x80)); UART2->DR=ch; return ch;}同时需要修改IAR的Projec t- >Options -> General..._error[li009]: runtime model conflict: module xxexit.o(dbgstm8smn.a) specifie

Java Utils工具类大全_utils.getapp() java-程序员宅基地

文章浏览阅读1.8w次,点赞4次,收藏69次。源码和jar见:https://github.com/evil0ps/utils#Java Utils封装了一些常用Java操作方法,便于重复开发利用.另外希望身为Java牛牛的你们一起测试和完善,欢迎入群263641914 一起封装和完成常用的Java代码。节约撸码时间以方便有更多的时间去把妹子~#开发环境Win7x64JDK1.7IDEA14#项目结构│ README.m..._utils.getapp() java

linux离线断网环境 ,安装virtualenv和django,创建项目虚拟环境和安装依赖包,_linux离线安装django-程序员宅基地

文章浏览阅读3.2k次。离线安装virtualenv和django工作中需要离线安装django,记录下: 环境: 离线机器系统:centos 6.5 python 版本: python 2.6.6 virtualenv 版本: 1.9 django 版本: 1.6.11 离线安装virtualenv 下载安装包 $ curl -O https://pypi.python.o..._linux离线安装django

Debian10 安装桌面 亲测有效-程序员宅基地

文章浏览阅读1.3w次,点赞5次,收藏23次。在Debian 10上安装桌面环境如果在安装过程中没有选择桌面,只是安装了标准系统Debian提供了一个命令行工具(tasksel)来简化桌面环境的安装,只需运行如下命令即可:$ sudo tasksel然后,你可以从列表中选择所需的桌面环境,如下图所选的是Cinnamon:从要安装的软件列表中选择Cinnamon,然后使用选择“ok”:稍等片刻,注销或者重启即可..._debian10 安装桌面

随便推点

统一过程模型(RUP/UP)-程序员宅基地

文章浏览阅读3.5k次。统一过程(RUP/UP,Rational Unified Process)是一种以用例驱动、以体系结构为核心、迭代及增量的软件过程模型,由UML方法和工具支持,广泛应用于各类面向对象项目。RUP是由Rational公司开发并维护,和一系列软件开发工具紧密集成。RUP蕴含了大量优秀的实践方法,如:迭代式软件开发、需求管理、基于构件的构架应用、建立可视化的软件模型、软件质量验证、软件变更控制等。..._统一过程模型

idea如何创建XML文件_idea创建xml配置文件-程序员宅基地

文章浏览阅读3.5w次,点赞78次,收藏181次。1.找到File目录下的Settings打开2.找到Editor并打开3.找到Editor下的File and Code Templates并打开4.先选中Files再点击+号​5.Name的值改为XML File ,Extension(文件后缀)里面填xml ,内容中间的内容为选中下方的Enable Live Templates后点击Apply,最后点击OK6.右键项目new --> XML File ​_idea创建xml配置文件

vue v-charts面积图实现_v-charts-v2-程序员宅基地

文章浏览阅读504次。vue v-charts面积图实现_v-charts-v2

Android官方提供的支持不同屏幕大小的全部方法-程序员宅基地

文章浏览阅读62次。转载请注明出处:http://blog.csdn.net/guolin_blog/article/details/8830286原文地址为:http://developer.android.com/training/multiscreen/screensizes.html本文将告诉你如何让你的应用程序支持各种不同屏幕大小,主要通过以下几种办法:让你的布局能充分的自适应屏幕根据屏..._

大数据Linux命令之如何判断Linux服务是否存活_根据进程号和端口号判断服务是否存活-程序员宅基地

文章浏览阅读1.3k次。一、查看进程是否运行: ps -ef | grep httpd二、查看端口号: netstat -nlp|grep xxx (xxx是pid)第一步:ping xxx服务所在的机器的ip: 网络环境能够ping通的,服务正常,不能ping通,需要排查。Windows:Linux:第二步:查看xxx服务的端口号和服务地址(监听地址)第三步 telnet xxxxxx yy (x..._根据进程号和端口号判断服务是否存活

matlab实现人群计数密度图标签文件生成_get_density_map_gaussian matlab-程序员宅基地

文章浏览阅读4.1k次,点赞7次,收藏49次。问题近期在研究C^3 Framework系列之一:一个基于PyTorch的开源人群计数框架为了实现自行标注数据集,也就是针对诸如MCNN等工程制作自己的mat文件,或者csv文件。最终结果大概是这样数据标定针对上述三张照片,通过matlab代码进行数据标定,标定过程类似于这样对应代码%对图片上某个点进行标注clear allclose allclcset(gcf,'co..._get_density_map_gaussian matlab