Mono Mng Model In Unity
目录 引言 问题及解决过程 总结 引言在Unity中,继承MonoBehaviour的类(脚本)可以挂载在场景中的对象上,而且也不推荐继承了MonoBehaviour的类(脚本)在外部自己使用C#中的new关键字实例化。 Q1: 既然继承了MonoBehaviour的类(脚本)不推荐使用new关键字实例化,那么Unity内部是如何实例化这个类并将脚本挂载到场景中的对象上的呢?A: 当我们使用C#语言发起了一个实例化组件的请求时,(1)Unity会在C++层创建一个对应的对象实例;(2)Unity的脚本后端(Mono或IL2CPP运行时)会在托管堆中创建脚本的实例;(3)Unity再将对象实例和脚本实例桥接(对接),建立起了C#和C++间的映射;(4)绑定完成后,会将脚本实例注册到(register)核心循环(生命周期函数)。 Q2: 有没有一种方法让没有继承MonoBehaviour的类的方法也能够在生命周期函数中执行?A: 当然有,接下来我要做的事情就是要实现这种情况。 问题及解决过程既然是继承了MonoBehaviour类的对象才能够进入生命周期函数,那...
ResoucesMng Model In Unity
目录 引言 问题与解决过程 总结 引言读者,欢迎来到这一篇文章,你发现了吧 :) ,这一章采用了新的排版,希望你能够喜欢。这篇文章标题叫做Resources Mng Model In Unity,即Unity中的资源管理器模块。在本文,我会介绍Unity中如何动态地加载资源,而不是像以往一样用手拖动资源。 重在尝试,放手去做吧,少年! 问题与解决过程 Q1: Unity里,如何动态加载资源?A: 在这之前,我先告诉你一个重要文件夹,Resources文件夹,这个文件夹需要自己在项目工程中手动创建,文件夹里的内容有以下特点: 可以用ResourcesAPI加载; 打包时会压缩; 打包时还会加密; 打包后只可读,可以用ResourcesAPI加载。 简单来讲,这个文件夹的内容可以被我们用ResourcesAPI动态加载出来供我们使用。 Q2: 有哪些常用资源文件?A: 像GameObject、AudioClip、TextAsset和Texture等都是常用的,预制体就是GameObject类型,音频文件就是AudoClip类型,文本文件就是TextAsset...
EventCenter Model In Unity
Event Center Model In Unity这篇文章将在Unity中实现事件中心模块,在此之前我先引入一个情境:当玩家打败Boss时,Boss会掉落物品、同时会播放玩家胜利动画、如果是第一次击败Boss还会进行成就播报、NPC会为你庆祝(甚至开一场party)…… Q1:天啊!这么多的事情!??!弓虽!是我的话要在好多个脚本中写上好多好多逻辑,我还会为怪物、玩家、成就、NPC添加一堆状态,这样让除自己之外的脚本也知道自己发生了什么改变,想想就头疼……A:无需担心!读者,或许我该称呼你为元读者?本文就是告诉你解耦的方式的。:)Q2:作者,哦不,元作者,解耦是啥?A:解耦,用我的话说,就是把莲藕的丝切断,如果能弄干净就好了,不然吃莲藕的时候还得吃一脸丝。在程序里,就是各个脚本负责某个特定功能,不要插足别的事情,到时候在脚本间的决策阶段会很麻烦,脚本和脚本打架,就像《千与千寻》中锅炉爷爷说的”不要抢走别人的工作“,哈哈哈,跑题了。A:在此之前,我将介绍一下观察者模式,在我上面举的例子当中,有怪物、成就、玩家和NPC,其中一个部分发生变化,其他的部分也要发生改变。这时,我...
Singleton Model In Unity
目录 单例模式基类 可以挂载到场景对象上的单例模式基类 单例模式基类如何实现一个单例模式基类?我们知道单例类需要具备这些东西: 全局唯一的实例 提供给外部的访问点 单例模式类一般是在整个生命周期中唯一的,用于管理的类。 在这里,我将介绍一个最简单的单例模式基类,以后可以直接继承该基类以实现单例模式。 1234567891011121314public class BaseMng<T> where T: new(){ //唯一实例 private static T instance; //提供给外部的访问点 public static T GetInstance() { if(instance == null) { instance = new T(); } return instance; }} Q1:在Unity中,只有继承了MonoBehaviour的类才能绑定在对象上,这不就...
