Unity程序框架
文章平均质量分 72
Unity黑马王子
第十八届全国大学生智能汽车大赛,安徽赛区摄像头一等奖(第三名)第十九届完全模型组二等奖,参与专业专利两个
CN202211475744.X,CN202310368041.5,大学生创新创业省级奖项两项,全国计算机等级考试三级
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
29.音效管理模块原理和作用
游戏中很多地方都会使用音乐和音效,如果每个模块都单独处理音效,会产生大量重复代码,也不方便统一管理。因此需要一个独立的,统一管理游戏中的音乐和音效。原创 2026-09-10 10:12:23 · 38 阅读 · 0 评论 -
28.资源加载模块整合
资源加载模块中,会把之前已经完成的小框架代码按照功能进行分类整理,放到对应的框架文件夹中。原创 2026-09-10 10:11:32 · 158 阅读 · 0 评论 -
27.Assetbundle资源加载:优化重复加载
本节将这三个阶段都改为异步加载。主包和可以继续同步加载。原创 2026-09-10 10:10:33 · 167 阅读 · 0 评论 -
26.Assetbundle资源加载模块
如果只有第二步使用异步 API,第一步仍然同步,就不算完整的异步加载。原创 2026-09-10 10:09:31 · 201 阅读 · 0 评论 -
25.Editor 资源加载:基本实现
根据完整工程路径加载一个指定类型的资源。原创 2026-09-09 09:41:37 · 366 阅读 · 0 评论 -
24.Editor 资源加载:主要作用和基本原理
正式发布的项目通常会使用管理大部分游戏资源,以减小包体并支持热更新。但是在开发阶段频繁打包 AssetBundle 会降低开发效率,因此可以直接从 Unity 工程中加载资源,等到最终测试或发布时再改用 AssetBundle。原创 2026-09-09 09:39:39 · 206 阅读 · 0 评论 -
23.Resources资源加载:引用计数优化
之前的资源管理器只知道资源是否已经加载,却不知道还有多少地方正在使用它。如果直接卸载,可能导致其他使用者受到影响;如果一直不卸载,又会让无用资源长期占用内存。原创 2026-09-09 09:38:23 · 76 阅读 · 0 评论 -
22.Resources资源加载:同步加载优化
Resources加载过的资源会保存在内存中。再次加载同一资源时,通常会直接使用已有资源,不会重复占用一份资源内存。但是每次调用异步加载仍然会进行查找并开启协程,重复调用会产生不必要的性能开销。原创 2026-09-09 09:30:01 · 94 阅读 · 0 评论 -
21.Resources资源加载:异步加载优化
Resources加载过的资源会保存在内存中。再次加载同一资源时,通常会直接使用已有资源,不会重复占用一份资源内存。但是每次调用异步加载仍然会进行查找并开启协程,重复调用会产生不必要的性能开销。原创 2026-09-09 09:28:44 · 164 阅读 · 0 评论 -
20.Resources资源加载:基本实现
将Resources的加载和卸载方法统一封装到ResMgrResMgr由于普通 C# 类不能直接开启协程,异步操作需要通过MonoMgr执行。原创 2026-09-08 09:38:14 · 346 阅读 · 0 评论 -
19.资源加载模块:主要作用和基本原理
Unity 项目中可能同时使用多种资源加载方式:实际开发中可能组合使用多种加载方式。如果加载代码分散在不同系统中,会出现两个主要问题:资源加载模块主要负责:先将不同加载方式分别模块化:然后通过上层资源加载模块进行整合:调用者根据项目需求选择具体加载方式,各加载模块只负责自己对应的资源。 仍然可以用于简单项目和快速原型,但大量使用可能增加构建体积、内存占用和启动时间。当前 Unity 的 可以通过地址异步加载本地或远程资源,并自动处理资源依赖。对于需要统一资源组织和异步加载的新项目,通常优先考虑 。本节原创 2026-09-08 09:37:32 · 158 阅读 · 0 评论 -
18.事件中心优化:事件名
三处必须使用同一个枚举成员和同一种参数类型。原创 2026-09-08 09:36:55 · 176 阅读 · 0 评论 -
17.事件中心优化:泛型参数
使用object监听方法可以直接接收Enemy3这样不需要类型转换,传递值类型时也能避免object产生的装箱和拆箱。原创 2026-09-08 09:36:02 · 184 阅读 · 0 评论 -
16.事件中心优化:添加参数
原来的事件只能通知监听者“敌人死亡了”,不能告诉监听者死亡的是哪个敌人。添加参数后,Enemy和Player收到事件后,就能读取死亡敌人的名称、编号等信息。原创 2026-09-08 09:34:25 · 200 阅读 · 0 评论 -
15.事件中心:实现
不直接引用Level和Player,而是通过EventMgr发送死亡事件,从而降低对象之间的耦合度。原创 2026-09-07 10:21:56 · 360 阅读 · 0 评论 -
14.事件中心:主要作用和原理
如果怪物直接引用这些系统,对象和模块之间会互相依赖。随着系统增多,引用关系会越来越复杂,耦合度也会越来越高,不利于开发和维护。原创 2026-09-07 10:20:59 · 107 阅读 · 0 评论 -
13.缓存池优化:对象上限配置
这种方式要求调用者每次获取对象时都知道并传入正确的上限。表示这一类对象最多允许同时创建多少个实例。因为它是公共字段,所以可以直接在 Unity Inspector 中修改。如果由调用者传入上限,同一种对象可能在不同位置得到不同配置。传入的是相对路径,不需要扩展名。将它重新添加到列表尾部,表示该对象开始了新一轮使用。这样可以保证对象数量达到上限后不再继续实例化。达到数量上限且没有空闲对象时,会取出。创建的预制体都必须添加该组件。,调用者只需要提供资源路径。在实例化对象后获取它的。Lesson13 通过。原创 2026-09-07 10:20:00 · 87 阅读 · 0 评论 -
12.缓存池优化:对象上限
原对象池在空闲池中没有对象时,会不断实例化新对象。如果已经取出的对象长时间不归还,每次调用GetObj()都可能创建新对象,导致同类对象的数量没有上限。原创 2026-09-07 10:18:35 · 93 阅读 · 0 评论 -
11.缓存池优化:窗口布局
对象池中的对象通常不会真正销毁,而是:obj.SetActive(false),然后继续保留在场景中。当对象数量变多以后,Hierarchy 中可能出现大量失活对象。原创 2026-09-07 10:17:35 · 221 阅读 · 0 评论 -
10.缓存池的实现
保存不同类型的对象。Dictionary:整个柜子string:抽屉名字 / 对象类型标识Stack<GameObject>:某一类对象的缓存容器。原创 2026-09-07 10:16:26 · 602 阅读 · 0 评论 -
9.缓存池的作用和原理
减少 Instantiate,减少 Destroy,重复使用已有对象从而降低:内存分配、GC压力、频繁创建销毁带来的性能消耗。原创 2026-09-07 10:15:30 · 170 阅读 · 0 评论 -
8.公共 Mono 模块实现
继承的类可以直接使用 Unity 提供的生命周期函数。原创 2026-09-07 10:13:24 · 340 阅读 · 0 评论 -
7.公共 Mono 模块
继承的类可以直接使用 Unity 提供的生命周期函数。原创 2026-09-07 10:12:03 · 187 阅读 · 0 评论 -
6.单例模式:懒汉式单例
例如第一次真正使用:GameManager.Instance时,会触发类型初始化。因此不需要自己再写:lock来保护:new GameManager();这里没有:if (instance == null)如果被多个线程同时调用,仍然可能产生线程安全问题。类型初始化由 CLR 根据类型实际使用情况进行。或者根据框架需求实现自己的懒加载逻辑。两种方式解决的是不同需求。静态字段的初始化由 CLR 管理。实例由静态字段初始化完成。原创 2026-09-07 10:10:56 · 293 阅读 · 0 评论 -
5.单例模式问题3:多线程问题
假设线程 A 和线程 B 同时第一次访问,两个线程都可能通过:instance == null的判断,从而分别创建对象。这就破坏了单例的唯一性。因此正常情况下都运行在 Unity 主线程。如果整个 MonoBehaviour 单例只从主线程访问,就不存在多个线程同时执行。不能只给:AddData()加锁,却让其他地方直接访问集合。作用:如果单例已经创建,直接返回。,也只有一个线程能够创建对象。保证同一时刻只有一个线程进入指定代码块。需要创建对象,之后只是返回已有实例。没有使用同一个锁,仍然不安全。原创 2026-09-02 14:12:20 · 172 阅读 · 0 评论 -
4.单例模式问题2:重复挂载
单例依附在GameObject上,因此可能出现多个相同单例组件。原创 2026-09-02 14:10:49 · 147 阅读 · 0 评论 -
3.单例模式问题1:构造函数
通过new T()创建实例。原创 2026-09-02 14:09:58 · 174 阅读 · 0 评论 -
2.MonoBehaviour 单例模式
这种单例无法使用 Unity 生命周期:但是 Unity 中很多管理类需要。原创 2026-09-02 11:55:24 · 391 阅读 · 0 评论 -
1.non-MonoBehaviour 单例模式泛型基类
<think>我们根据提供的内容生成摘要,≤150字。内容是关于单例模式的介绍,包括非MonoBehaviour单例、泛型基类、约束等。摘要需简洁概括核心要点。注意字数限制。</think>摘要:本文介绍Unity中非MonoBehaviour单例模式,通过泛型基类Singleton<T>(约束为class、new())实现全局唯一实例。Instance属性提供统一访问入口,避免重复创建导致数据不一致。管理器继承后可直接调用,但不可用Unity生命周期,需手动初始化,并注意避免过度使用。原创 2026-09-02 11:29:14 · 476 阅读 · 0 评论
分享