继续搞单例模式  在实战中体会了一下单例模式

唉  还是搞不懂  虽然知道了怎么写  但在哪用还是很模糊  等以后写多了就好了吧

回顾一下,单例模式的定义是:保证一个类只有一个实例,并且提供一个访问它的全局访问点。单例对象的类必须保证只有一个实例存在。在我们的场景中,全局脚本的对象只会创建一次,保证单例,然后它(全局单例类)提供给各个脚本访问单例对象的方法,并且所有其他脚本的公共数据都会存储在全局单例脚本中。

单例模式可以很方便地提供数据、对象的访问方式,单例仅允许被实例一次,这就保证了他在各个程序模块间的唯一性。大家可能会想到全局变量,是的,确实可以用全局变量来做。不过为了提供代码的可维护性,全局是有很大局限的。你又想在Unity里经常还可Static 变量会共享信息,不过你还发现他被声明在各处。对的,不好找,不好维护。

至于使用嘛   我也在研究   基本上都是在控制游戏的流程啊   背景音乐啊  切换场景啊什么的时候用到单例模式

以下是模型的单例模式:模型的单例不能有构造器  不 能 有 构 造 器 !   而且要注意Awake和start的执行顺序。

using UnityEngine;
using System.Collections;//对象单例模式
public class GameManager : MonoBehaviour
{private static GameManager m_manager;public static GameManager M_manager{get{if (m_manager == null){m_manager = new GameObject("GameManager").AddComponent<GameManager>();}return m_manager;}}//注意执行顺序void Awake(){//添加音频组件gameObject.AddComponent<AudioSource>();}// Use this for initializationvoid Start(){}//添加音频public void PlayAudio(AudioClip clip){audio.PlayOneShot(clip);}// Update is called once per framevoid Update(){}
}

在摄像机脚本中简简单单调用一下就好了

 void Start(){GameManager manager = GameManager.M_manager;manager.PlayAudio(clip);ModelManager modelManager = ModelManager.M_mamager;}

还有对象的单例,用法和c#时候没什么两样

using UnityEngine;
using System.Collections;//模型单例
public class ModelManager{private static ModelManager m_mamager;public static ModelManager M_mamager{get {if (m_mamager == null) {m_mamager = new ModelManager();}return ModelManager.m_mamager; }}public Mouse[] mouses = new Mouse[10];public ModelManager() {for (int i = 0; i < 10; i++){mouses[i] = new Mouse();}}}

下面是一些Application类的使用    感觉还是一样  都是公式   :

using UnityEngine;
using System.Collections;public class GameController : MonoBehaviour
{public AudioClip clip;// Use this for initializationvoid Start(){GameManager manager = GameManager.M_manager;manager.PlayAudio(clip);ModelManager modelManager = ModelManager.M_mamager;}// Update is called once per framevoid Update(){}void OnGUI() {GUILayout.Label(Application.platform.ToString());            GUILayout.Label(Application.runInBackground.ToString());     GUILayout.Label(Application.dataPath.ToString());GUILayout.Label(Application.persistentDataPath.ToString());GUILayout.Label(Application.temporaryCachePath.ToString());GUILayout.Label(Application.loadedLevel.ToString());//切换场景if (GUILayout.Button("level")) {//销毁之前场景Application.LoadLevel(1);//不销毁之前场景Application.LoadLevelAdditive(1);}//退出if (GUILayout.Button("quit")){Application.Quit();}//链接 打开网页if (GUILayout.Button("baidu")){Application.OpenURL("http://www.baidu.com");}}}

今天就研究这么多啦  good night buddies!

转载于:https://www.cnblogs.com/little-sun/p/4379118.html

Unity-3d Day06相关推荐

  1. Unity 3D学习视觉脚本无需编码即可创建高级游戏

    在本课程中,您将学习如何在Unity中使用可视化脚本(以前称为Bolt)以及如何在不编写一行代码的情况下创建自己的高级游戏所需的一切.本课程将教你如何掌握可视化脚本,即使你以前没有任何关于unity或 ...

  2. Unity三维游戏开发C#编程大师班 Masterclass In C# Programing Unity 3D Game Development FPS

    本课程采用现代游戏开发(Unity 2021)的最新内容和最新技术 学习任何东西的最好方法是以一种真正有趣的方式去做,这就是这门课程的来源.如果你想了解你看到的这些不可思议的游戏是如何制作的,没有比这 ...

  3. Unity 3D为策略游戏创建地图学习教程

    MP4 |视频:h264,1280×720 |音频:AAC,44.1 KHz,2 Ch 语言:英语+中英文字幕(根据原英文字幕机译更准确) |时长:30节课(7h 42m) |大小:5 GB 含项目文 ...

  4. Unity 3D游戏代码编程学习教程 Full Guide To Unity 3D C#: Learn To Code Making 3D Games

    Unity 3D游戏代码编程学习教程 Full Guide To Unity 3D & C#: Learn To Code Making 3D Games Full Guide To Unit ...

  5. 聊聊在博客园写博客的这两年《Unity 3D脚本编程:使用C#语言开发跨平台游戏》正式出版...

    版本状态: 2016.9 第一次印刷 (2016.11 输出到台湾) 2017.1 第二次印刷 2017.5 第三次印刷 2017.5 电子书上线:Unity 3D脚本编程--使用C#语言开发跨平台游 ...

  6. 《Unity 3.x游戏开发实例》一1.5 欢迎来到Unity 3D

    本节书摘来异步社区<Unity 3.x游戏开发实例>一书中的第1章,第1.5节,作者: [加]Ryan Henson Creighton 译者: 师蓉 责编: 陈冀康,更多章节内容可以访问 ...

  7. Unity 3D:在现有的Android游戏场景中显示AdMob的横幅

    2019独角兽企业重金招聘Python工程师标准>>> 关于如何在现有的Android项目现场显示AdMob的横幅,在一个Android项目中使用一个简单的Android JAR文件 ...

  8. Unity 3D 离线协议

    在联网状态下,获得离线协议,然后导入到Untiy的协议管理器里. 以后在断网的情况下,也能离线使用Unity. 步骤: 1.生成 Request 文件.(Unity_v5.3.1f1.alf) 1) ...

  9. 再议Unity 3D

    一年前,偶发冲动,翻译了<[译] Unity3D游戏和facebook绑定(1:简介)>系列文章. 现在看有2个明显的好处, 一:给这个不温不火的博客带了top 3的人气: 二:我个人由此 ...

  10. 日志服务接入方式之Unity 3D篇

    Unity3D是由Unity Technologies开发的一个让玩家轻松创建诸如三维视频游戏.建筑可视化.实时三维动画等类型互动内容的多平台的综合型游戏开发工具,是一个全面整合的专业游戏引擎. 日志 ...

最新文章

  1. 广东安网2016:重拳挥出 打造安宁互联网环境
  2. STL常用的遍历算法
  3. mariab修改mysql端口_修改mysql/MariaDB数据库的端口号+远程
  4. 基于MATLAB的Dijkstra算法实现及案例分析
  5. rhel系统启动过程_Linux系统启动过程分析
  6. 你真的了解iOS怎么取属性的吗?
  7. Vue数据绑定v-bind
  8. Python 字符串操作(string替换、删除、截取、复制、连接、比较、查找、包含、大小写转......
  9. 【AI视野·今日CV 计算机视觉论文速览 第204期】Mon, 24 May 2021
  10. java foreach6_Java foreach循环是否会创建一个新对象?
  11. 最佳圆角字体,设计师的最爱
  12. [saiku] JCR在saiku中的运用原理
  13. IOS UIView直接响应点击事件的解决方法
  14. 通过REST API修改JUNOS的配置
  15. iOS 导航栏遮挡UIViewController问题
  16. UE4莫名其妙崩溃的解决办法
  17. 华为机试 素数伴侣 匹配匈牙利算法
  18. 计算机基础知识教程 pdf,《计算机基础知识教程》.pdf
  19. 使用oppo手机,要记得关闭这些设置,不然手机会越用越卡
  20. POI java 处理excel上传图片

热门文章

  1. android attrs获取_Android 常用侧滑栏实现
  2. vs找不到dll_零基础学习Python_绝对VS相对
  3. python图片横向合并_python实现图片横向和纵向拼接
  4. [BZOJ 1012] 最大数maxnumber
  5. IJCAI 2019 《GraspSnooker: Automatic Chinese Commentary Generation for Snooker Videos》论文笔记
  6. GPE监控多台MySQL_zabbix监控多个服务器
  7. 开了gomod不识别gopath_三分钟掌握Go mod常用与高级操作
  8. 20211028 Stabilizability
  9. 【巷子】---vue基于mint-ui三级联动---【vue】
  10. Activiti数据库