![](https://img-blog.csdnimg.cn/20201014180756919.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
基础框架
u3d相关的框架设计
hycai_007
这个作者很懒,什么都没留下…
展开
-
一、单例模式基类
继承自 MonoBehaviour 的单例 using System.Collections; using System.Collections.Generic; using UnityEngine; /// <summary> /// 继承自 MonoBehaviour 的单例基类 /// </summary> /// <typeparam name="T"></typeparam> public class MonoSingletonBase<T&原创 2021-11-24 10:36:24 · 1287 阅读 · 0 评论 -
二、纯C#对象使用 MonoBehaviour 的周期方法
众所周知,继承了Monobehavior之后,我们就可以使用Unity给我们提供的一些生命周期函数。那假设类没有继承Monobehavior,但是我们又希望使用到Mono的东西,比如帧更新方法Update、协程等,这该怎么做呢? 使用 MonoMgr 解决这个问题。 代码如下: using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.Events; public cla原创 2021-12-07 16:23:26 · 2116 阅读 · 0 评论 -
三、Res资源加载管理器
资源加载管理器,使用 Resources.Load 和 Resources.LoadAsync加载 Resources资源文件夹下的资源,实现接口封装。 using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.Events; //资源加载模块 public class ResLoadMgr : SingletonBase<ResLoadMgr> { .原创 2021-12-07 11:34:43 · 195 阅读 · 0 评论 -
四、缓存池框架
缓存池 缓存池模块主要作用是性能优化,减少CPU和内存消耗。 Unity每一次创建对象,其实都是C#在内存中申请了一块空间,之后在Unity场景中Destroy这个物体对象,实际上只是断开了实例化对象对于内存的那块空间的一个引用,内存中依然存在那个对象对应的空间。 直到内存占用满了,CPU才会回过头来找内存中没有被引用的空间(称为一次GC),然后释放该空间,然后建立新的对象,如此往复。 GC步骤是比较消耗CPU的,所以,我们需要缓存池。缓存池可以将你创建的对象在你用完后收录起来,等到你再要调用的时候,就可以原创 2021-12-07 11:37:02 · 215 阅读 · 0 评论 -
五、音效管理器
在Resource目录下面新建一个SoundRes目录存放我们的音乐,Effect文件夹下存放音效,Bg文件夹下存放背景音乐 代码如下 using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.Events; public class SoundMgr : MonoSingletonBase<SoundMgr> { /// <summary&g原创 2021-12-07 16:43:47 · 2037 阅读 · 0 评论 -
六、事件管理中心
事件管理中心(观察者设计模式),这个模块能很大程度的减少代码的耦合度,减小代码之间的复杂性,是个非常重要的管理中心。 个人理解是,事件管理中心就是个广播站,他可以增加事件监听,然后当触发时,广播通知给所有监听的方法。如:玩家升级,需要通知给个人信息面板,主界面的玩家信息显示更新等级等等,同时通知给所有监听了这个“玩家升级”这个事件的地方。 框架基础 EventCenter 事件中心,当前扩展使用,4个参数类型的方法监听,主要分为增加事件监听AddEventListener、触发事件EventTrigge原创 2021-12-07 12:23:41 · 293 阅读 · 0 评论 -
七、UI管理器
UI基类 统一管理UI以及相关(UGUI),提高代码复用率,降低文件耦合性。 using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; using UnityEngine.EventSystems; public class PanelBase : MonoBehaviour { private Dictionary<string, List<原创 2021-12-07 17:19:02 · 320 阅读 · 0 评论 -
八、SceneMgr场景加载管理器
场景切换 using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.Events; using UnityEngine.SceneManagement; //场景切换模块 public class SceneMgr : SingletonBase<SceneMgr> { /// <summary> /// 切换场景 ///原创 2021-12-07 16:30:50 · 513 阅读 · 0 评论