- 博客(69)
- 收藏
- 关注
原创 Unity资源加载模块全解析
本文介绍了Unity中资源加载模块的设计与实现,主要包括Resources、AB包、UnityWebRequest和Editor四种资源加载方式。核心模块包括:1. ResourcesMgr实现同步/异步资源加载和引用计数管理;2. ABMgr处理AssetBundle依赖加载和异步加载;3. EditorResMgr开发阶段快速加载资源;4. UnityWebRequestResMgr支持网络资源加载。通过ABResMgr整合Editor和AB包加载模式,实现开发/发布环境无缝切换。该模块采用单例模式、引
2025-10-28 17:41:00
460
原创 游戏事件中心:解耦模块的利器
本文介绍了事件中心模块的设计与实现,通过观察者模式解耦游戏模块间的通信。核心是使用字典存储事件类型与对应委托的映射关系,提供添加/移除监听、触发事件等方法。优化部分包括:1)支持泛型参数传递;2)使用枚举代替字符串定义事件类型。示例展示了怪物死亡事件的触发和响应流程,包括被观察者触发事件和观察者注册/注销回调。该设计降低了模块间的直接依赖,提高了代码的可维护性和扩展性。
2025-10-27 18:57:51
464
原创 高效对象池设计:提升Unity性能的关键
本文介绍了Unity中的对象池(PoolMgr)实现方案,包含三个优化阶段:1.基础对象池功能,通过字典存储可复用对象;2.Hierarchy窗口布局优化,使用PoolData类管理父子关系,提升开发调试体验;3.对象上限控制,通过DelayRemove脚本限制最大实例数,优先复用"使用最久"的对象。该方案有效减少了内存分配和GC开销,优化了资源管理,特别适合需要频繁创建/销毁对象的场景。实现中采用抽屉式管理,支持动态调整对象数量上限,并通过层级可视化方便调试。
2025-10-27 18:55:25
317
原创 Unity公共Mono模块:非继承脚本也能更新
MonoMgr模块通过单例模式为非MonoBehaviour脚本提供Unity生命周期功能。该模块实现了Update、FixedUpdate和LateUpdate事件委托,允许外部脚本通过Add/Remove方法注册更新逻辑。同时支持协程功能,使普通C#脚本也能使用Unity的帧更新机制。这种设计解耦了脚本与MonoBehaviour的强制继承关系,通过事件机制实现了更灵活的游戏逻辑管理。
2025-10-25 19:42:59
346
原创 Unity单例模式基类全解析
摘要:本文介绍了Unity中三种单例模式基类的实现方式:1)不继承MonoBehaviour的通用单例基类;2)继承MonoBehaviour的挂载式单例基类;3)自动挂载式单例基类。针对单例模式的安全性问题,提出了解决方案:通过抽象类和反射确保构造函数安全;使用[DisallowMultipleComponent]特性防止重复挂载;根据使用场景判断是否需要加锁处理多线程并发问题。最后给出了带锁机制的安全单例实现代码,确保在多线程环境下也能安全使用。
2025-10-25 19:42:02
293
原创 Unity中ScriptableObject数据容器详解
Unity的ScriptableObject是一个数据容器基类,用于创建可配置的数据资源文件。它支持数据复用、配置管理和编辑器持久化,可通过继承基类定义自定义数据结构,并支持两种创建方式:菜单创建和代码创建。使用时可通过Inspector关联或资源加载,具有生命周期函数。适用于配置数据、复用数据、编辑器功能开发等场景,能有效减少内存占用。结合JSON可实现数据持久化存储,通过单例模式可优化数据访问效率,特别适合处理游戏中的共享配置数据。
2025-10-23 18:42:33
1265
原创 Unity新版InputSystem全解析(2)
本文介绍了Unity的PlayerInputManager组件和InputSystem在UGUI中的应用。主要内容包括:1) PlayerInputManager用于管理本地多人游戏输入,支持自动/手动加入玩家、分屏设置等;2) InputSystem对UGUI的支持需使用InputSystemUIInputModule,并介绍了多人游戏UI方案;3) 输入调试工具InputDebugger的使用方法;4) 通过Json配置文件实现改键功能,包含DataMgr单例模式、ChangeInputPanel界面和
2025-10-23 18:34:46
1201
原创 Unity新版InputSystem全解析(1)
本文介绍了Unity InputSystem的输入检测与配置方法,主要包括: 键盘、鼠标、触屏和手柄的输入检测方式,通过InputAction实现按键状态判断(按下/抬起/长按)和输入值获取。 InputAction的详细配置: 设置动作类型(Value/Button/PassThrough) 添加交互行为(长按/连击等) 值处理(归一化/反转/死区等) 组合键设置 输入配置文件的创建与使用: 通过ActionMaps管理多套操作方案 生成C#代码自动处理输入 使用PlayerInput组件关联配置文件 提
2025-10-22 18:35:07
1448
原创 Unity3D Addressables高效资源管理指南(2)
摘要:Unity Addressables系统提供了资源管理和加载的解决方案。文章详细介绍了Addressables的配置方式、路径设置、打包模式、资源加载方法以及内存管理机制。重点内容包括:1.Profiles窗口的三种打开方式;2.资源打包的三种模式(PackTogether/PackSeparately/PackTogetherbyLabel);3.通过异步操作和协程加载资源的方法;4.引用计数规则的内存管理机制;5.目录更新和预加载的实现方式。该系统通过灵活的配置选项和高效的资源管理,为Unity项
2025-10-21 17:30:47
1146
原创 Unity3D Addressables高效资源管理指南(1)
Addressables是Unity资源管理工具,提供自动化AB包管理、本地/远程资源加载功能。主要特点:1)自动处理资源依赖关系;2)支持资源分组管理;3)提供多种加载方式(同步/异步);4)支持标签分类和动态加载。使用方法包括创建配置、设置可寻址资源、分组管理,并提供三种播放模式(开发/测试/发布)。代码控制方面支持资源加载、场景加载和实例化,同时提供资源释放机制。通过AssetReference类实现类型安全加载,并支持自定义资源控制器实现更精细的资源管理。特别注意事项:Resources文件夹资源会
2025-10-16 17:00:17
2646
原创 Unity AB包加载与依赖管理全解析
本文介绍了Unity中AssetBundle(AB包)的使用方法。内容包括:1.如何创建和关联AB包;2.三种打包方式(不压缩/LZMA/LZ4)的特点;3.同步/异步加载AB包的代码实现;4.处理AB包依赖的方法;5.AB包卸载机制。文中还提供了一个完整的AB包管理器(ABMgr)实现,支持多平台、依赖管理和资源加载,包含了同步/异步加载接口,可有效管理AB包生命周期。通过该方案可以优化资源加载,减少内存占用,适合大型项目使用。
2025-10-15 16:39:49
416
原创 Unity进阶--C#相关
本文摘要了C#编程中的多个重要特性与应用场景: 可选参数与动态类型:介绍了命名参数、可选参数的用法,以及dynamic关键字的工作原理和注意事项。 线程与线程池:讲解多线程实现方式,ThreadPool的配置使用及其优缺点。 Task任务类:详细说明Task的创建方式、阻塞控制、延续任务和取消机制。 异步编程:解析async/await关键字的配合使用,包括取消令牌和延迟执行。 语法增强:包括静态导入、异常筛选器、nameof运算符、字面值改进等新特性。 模式匹配:涵盖常量模式、类型模式、var模式等多种匹
2025-10-14 18:08:00
844
原创 Unity网络开发--第三方协议工具Protobuf
Protobuf(Protocol Buffers)是谷歌开发的高效数据序列化工具,支持生成多语言代码。文章介绍了Protobuf的配置规则、编译器使用、自动生成工具创建以及序列化/反序列化操作。主要内容包括:1)下载Protobuf相关文件并准备DLL;2)创建.proto配置文件定义消息结构;3)使用protoc.exe生成脚本文件;4)通过示例代码演示序列化和反序列化过程。该工具适用于游戏开发等场景,能提高开发效率并保证协议稳定性。
2025-10-13 17:19:11
431
原创 Unity网络开发--自定义协议生成工具
该摘要描述了一个基于XML配置自动生成C#枚举类、数据类和消息类的Unity工具。工具通过读取XML配置文件(包含枚举定义、数据结构和消息协议),自动生成对应的C#代码文件,包括: 枚举类生成:支持自定义枚举值和命名空间 数据结构类:支持基本类型、数组、列表、字典等复杂类型 消息类:包含消息ID、序列化和反序列化方法 工具可减少手动编写重复代码的工作量,提高开发效率。生成的代码包含完整的字节操作和网络通信支持,适用于游戏开发中的网络协议处理。
2025-10-12 18:13:28
230
原创 Unity网络开发--超文本传输协议Http(2)
本文介绍了Unity中UnityWebRequest类的使用,包括Get、Post、Put等HTTP请求操作。主要内容包括:1.通过UnityWebRequest获取文本、图片等资源;2.实现文件上传功能,包括Post和Put方式;3.封装单例模式上传文件方法;4.高级操作如自定义DownloadHandler处理下载数据;5.实现泛型方法统一处理不同类型资源的下载。文中详细讲解了各种请求方式的实现细节和注意事项,并提供了完整代码示例,帮助开发者掌握Unity与Web服务器的交互技巧。
2025-10-11 15:00:39
305
原创 Unity网络开发--文件传输FTP
FTP文件传输协议工作原理及Unity实现摘要 FTP协议基于TCP通信,支持主动/被动两种传输模式,提供ASCII和二进制两种传输方式(推荐二进制)。通过NetworkCredential类设置凭证信息,FtpWebRequest类实现上传、下载、删除等操作。 关键实现: 上传文件:设置UploadFile方法,获取请求流写入本地文件数据 下载文件:设置DownloadFile方法,读取响应流写入本地文件 单例封装:使用异步Task实现不阻塞主线程的文件传输 扩展功能:包含删除文件、获取文件大小、创建目录
2025-10-11 14:58:10
956
原创 Unity网络开发--超文本传输协议Http(1)
HTTP协议摘要:HTTP是基于TCP的无状态协议,采用请求-响应模型。主要特点包括:1)支持持久连接;2)无状态通信;3)使用元信息头传递附加数据。包含GET、POST等8种请求方法,通过状态码反馈请求结果(如200成功、404资源不存在)。在Unity中可通过HttpWebRequest类实现HTTP通信,包括下载资源(GET请求)和上传文件(POST请求)。上传文件需设置ContentType为multipart/form-data并遵守特定格式要求。可封装单例模式管理HTTP操作,实现异步下载/上传
2025-10-10 17:57:51
719
原创 Unity网络开发--套接字Socket(2)
网络通信中的分包和黏包问题及其解决方案。分包指一个消息被拆分发送,黏包则是多个消息合并发送。解决方案包括添加消息头标识长度,通过长度判断消息完整性。文章提供了C#代码示例,展示如何处理分包黏包,包括消息队列管理、缓存机制和消息解析。同时介绍了心跳消息机制用于维持长连接和检测客户端状态,以及异步服务器实现和UDP通信示例。核心要点:分包黏包处理机制、心跳检测、异步通信和UDP实现。
2025-10-09 17:06:11
312
原创 Unity网络开发--套接字Socket(1)
本文介绍了Socket套接字在网络通信中的核心作用,重点讲解了C#中Socket类的使用方法。主要内容包括:1) Socket的三种类型(流套接字/TCP、数据报套接字/UDP、原始套接字)及其创建方式;2) Socket的重要属性和常用方法,包括绑定、监听、连接等操作;3) 同步TCP通信的服务端和客户端实现流程;4) 通过面向对象思想优化后的服务端架构,包括线程池处理和消息队列机制;5) 自定义消息类型的实现方式,通过消息ID区分不同类型数据。文章最后展示了如何通过PlayerMsg类实现结构化数据的网
2025-10-08 16:10:41
768
1
原创 Unity网络开发--通信前必备知识
文章摘要: 本文介绍了网络游戏的两种通信方案:基于Socket的长连接(强联网)和基于HTTP的短连接(弱联网)。详细讲解了C#中IP地址和端口的相关类(IPAddress、IPEndPoint)的使用方法,以及域名解析的实现(通过DNS类同步/异步获取主机信息)。此外,文章还深入探讨了二进制数据的序列化和反序列化操作,通过BaseData基类及其子类TestInfo、Player展示了如何实现自定义数据类型的二进制转换,包括基本数据类型和复杂对象的读写方法。最后通过Unity示例代码演示了实际应用场景。
2025-10-07 16:55:20
537
原创 Lua语法(2)
Lua元表与面向对象编程摘要:本文介绍了Lua元表的概念及用法,包括设置元表(__metatable)、运算符重载(__add等)、__index和__newIndex等元方法。还展示了如何利用元表实现面向对象编程,包括封装、继承和多态。此外,还介绍了Lua标准库(os、math)的常用功能、垃圾回收机制(collectgarbage)以及包管理(package.path)。通过元表,Lua可以扩展表的默认行为,实现更复杂的编程范式。
2025-10-07 16:51:07
260
原创 Lua语法
Lua语言基础摘要 本文介绍了Lua语言的基本语法和特性,主要包括:1)变量类型:数字、字符串、布尔、nil及复杂类型;2)字符串操作:拼接、转换、截取等;3)运算符:算术、逻辑、比较运算;4)流程控制:条件分支和循环语句;5)函数定义与调用:包括闭包和变长参数;6)表(table)的使用:实现数组、字典和面向对象;7)多脚本执行和协同程序;8)特殊用法:多变量赋值、and/or特性等。Lua具有动态类型、自动内存管理、轻量级协程等特性,语法简洁灵活,适合嵌入式脚本和游戏开发。
2025-10-03 18:29:47
639
原创 Unity数据持久化操作——二进制篇
二进制是计算机采用的基数为2的数制,仅用0和1两个数码表示数据。其优势在于安全性高、效率高且便于网络通信。计算机通过二进制存储和传输数据,各类数据可转换为字节数组进行存储。C#提供了BitConverter类实现数据类型与字节数组的转换,Encoding类处理字符串编码转换。文件操作通过File类实现整体读写,FileStream类支持字节级处理。使用using语句确保流安全关闭。此外,还介绍了序列化/反序列化方法、异或加密技术,以及Excel表格数据的读取操作。
2025-09-27 18:44:15
1122
原创 Unity-导航寻路系统
Unity导航寻路系统基于A星算法优化,通过导航网格(NavMesh)实现角色自动寻路避障。系统包含四个核心组件:导航网格生成地形数据、NavMeshAgent计算移动路径、OffMeshLink处理平面间跳跃、NavMeshObstacle处理动态障碍物。开发者需先烘焙场景地形数据,再配置代理参数如移动速度、避障优先级等。代码层面可通过SetDestination()设置目标点,利用射线检测实现点击移动。动态障碍物组件可控制门的开关等交互元素,OffMeshLink可自定义连接路径。该系统为游戏角色智能移
2025-09-27 18:35:48
1027
1
原创 Unity-角色控制器
角色控制器是Unity中用于稳定控制角色移动的组件,相比刚体能更可靠地处理碰撞和地形。它允许角色在斜坡、台阶上自然移动,避免刚体常见的滑动或被撞飞问题。关键参数包括坡度限制、台阶高度和皮肤宽度等。代码示例展示了如何通过CharacterController组件实现受重力影响的移动(SimpleMove)和地面检测(isGrounded),同时支持碰撞检测(OnControllerColliderHit)和触发器事件。注意使用角色控制器时无需额外添加刚体组件。
2025-09-26 17:26:50
601
原创 Unity-状态机复用
状态机复用是通过共享基础状态机结构来减少重复工作的方法。在游戏开发中,当多个角色(如玩家和怪物)具有相同行为但不同动作时,可创建AnimatorOverrideController文件来复用基础状态机:1)右键创建AnimatorOverrideController;2)关联基础AnimatorController;3)替换特定动画。这样不同对象可共享状态机逻辑,只需覆盖个别动画,显著提升开发效率。
2025-09-26 17:25:25
295
原创 Unity-Statemachinebehaviour状态机行为脚本
状态机行为脚本是继承自StateMachineBehaviour的特殊脚本,用于在Unity的AnimatorController中关联特定状态。它通过重写基类方法实现状态行为监听:OnStateEnter(进入状态时调用)、OnStateExit(退出时调用)、OnStateUpdate(状态持续时每帧调用)等。开发者可利用这些回调函数实现状态相关逻辑,如播放音效、检测接触地面或控制特效。使用时需新建继承StateMachineBehaviour的脚本,重写对应方法并在状态机中关联该脚本,即可实现特定状态
2025-09-26 17:24:04
436
原创 Unity-动画目标匹配
本文介绍了Unity中动画目标匹配的实现方法,主要利用Animator组件的MatchTarget函数。文章详细说明了该功能的使用场景(如角色跳跃、抓取等动作)和实现步骤,包括获取动作关键点位置信息、调用API的时机选择(通过动画事件触发),并提供了具体代码示例。同时强调了两个关键注意事项:必须确保动画已切换至目标状态且不在过渡阶段,以及需要开启ApplyRootMotion属性。最后提醒开发者若匹配不准确,通常是由于调用时机不当造成的。
2025-09-26 17:22:36
343
原创 Unity-动画IK控制
IK(反向动力学)是骨骼动画中与正向动力学相反的技术,通过子骨骼末端位置的变化带动父骨骼旋转。在Unity中,可通过Animator组件的OnAnimatorIK回调函数实现IK控制,使用SetIKPosition/SetIKRotation等API设置四肢和头部的IK目标位置及旋转权重。实际应用时需在状态机中开启IK通道,并结合OnAnimatorMove处理根运动。示例代码展示了如何实现角色跟随鼠标看向目标位置的功能,通过控制LookAt权重和位置参数实现自然的人物动画效果。
2025-09-26 17:21:20
839
2
原创 Unity-动画子状态机
子状态机是状态机中的嵌套状态机,用于处理由多个动作组成的复杂状态。例如一个三段式技能(跳起、攻击、落下)可以封装在子状态机中。在Unity的AnimatorController中,通过右键菜单创建子状态机,并注意与外部状态机的连接方式。代码示例展示了如何通过Animator组件控制角色动画,使用SetFloat和SetTrigger方法响应键盘输入,实现角色移动和触发技能动画的功能。
2025-09-25 17:25:35
265
原创 Unity-动画2D混合
文章摘要:1D混合和2D混合是动画控制的两种参数化方法。1D混合通过单一线性参数控制,适用于简单动画过渡;2D混合利用二维平面坐标(x,y)实现更复杂控制。2D混合包含四种模式:简单定向模式处理基础方向运动;自由定向模式支持同一方向的多状态切换;笛卡尔坐标模式处理非方向性运动;直接模式则允许自定义节点权重,常用于表情动作。实际应用中,可将前进动作设为1D混合实现走跑过渡,其他方向同理处理。
2025-09-25 17:24:32
511
原创 Unity-动画1d混合
文章摘要:动画混合是游戏开发中处理多个相似动作平滑过渡的技术。通过在AnimatorController创建BlendTree状态,可以设置参数控制不同动画的混合权重,如根据速度混合行走/奔跑动画。关键设置包括:参数(Parameter)控制混合程度,Motion关联动画列表,Threshold设定动作权重临界值。1D混合树通过单一参数(如0-1范围)实现多个动作的过渡,如走路、跑步和左倾跑步的平滑切换。开发者可手动调整阈值或利用自动计算功能(基于动画速度等属性)来优化混合效果。
2025-09-25 17:23:31
464
原创 Unity-动画分层和遮罩
动画分层技术摘要 动画分层主要用于实现不同状态下的动画切换(如健康/虚弱状态)和动画组合播放(如上下半身独立动作)。通过权重、遮罩和混合方式(覆盖/叠加)控制动画效果,结合AvatarMask限定影响部位,能显著提升动画多样性并节省资源。同步层功能可简化状态管理,适用于复杂动作切换需求(如受伤状态调整)。该技术广泛应用于3D游戏角色动画,优化开发效率。
2025-09-25 17:21:46
532
原创 Unity-3D动画的使用
本文介绍了Unity中3D动画控制的基本流程:1. 为模型添加Animator组件和动画控制器;2. 在状态机中设置动画状态参数(播放速度、循环偏移等)和过渡参数(退出时间、过渡持续时间等);3. 通过代码控制状态切换(示例代码演示了通过输入控制动画状态转换);4. 详细说明了动画状态设置和过渡设置的各项参数功能,包括Motion、Speed、ExitTime、TransitionDuration等关键参数的用法。文章重点讲解了如何通过Animator控制器实现动画状态的平滑过渡和精确控制。
2025-09-24 18:14:17
1397
原创 Unity-模型导入相关设置
Unity模型导入与设置指南 摘要:Unity支持多种3D模型格式(FBX、DAE、OBJ等),但官方推荐使用FBX格式导入。模型导入后可在Inspector窗口的4个关键页签进行设置:1) Model页签调整比例/网格/几何体;2) Rig页签配置骨骼系统(人形/通用/旧版);3) Animation页签管理动画剪辑(帧范围/循环/根运动);4) Materials页签处理材质纹理。特别要注意:人形角色需配置Avatar系统,动画建议分文件导入,材质命名规则需统一。通过合理设置可优化性能(网格压缩/读写启
2025-09-24 18:11:30
1021
原创 Unity - Spine
摘要:Spine骨骼动画在Unity中的使用流程:1)从官网下载并导入spine-unity运行库;2)导入Spine导出的三个核心资源文件(.json骨骼数据、.png图集、.atlas.txt位置信息);3)通过拖拽_SkeletonData文件或添加脚本(SkeletonAnimation/SkeletonMecanim组件)创建动画对象。代码控制支持动画播放、转向、事件监听等,可通过AnimationState管理动画状态,使用特性快速访问动画元素。关键功能包括混合模式设置、根运动控制、动画过渡处理
2025-09-24 18:06:57
922
原创 Unity - 2D Animation
2D骨骼动画制作基础摘要:本文介绍了2D骨骼动画制作的基本原理和Unity中的实现方法。相比传统序列帧动画,骨骼动画通过单张图片分割、骨骼绑定和蒙皮权重设置,能够用更少资源实现流畅动画。文章详细讲解了Unity中骨骼编辑器的使用,包括骨骼创建、拆分、蒙皮设置和权重调整等操作。同时介绍了图集和PSB文件的特殊处理方式,以及反向动力学(IK)的应用,通过IKManager2D脚本实现末端控制带动整体骨骼运动的效果。最后提供了鼠标控制骨骼移动的示例代码,展示了骨骼动画的实际应用场景。
2025-09-23 16:42:16
2697
原创 Unity-序列帧动画
序列帧动画是通过快速切换静态图片产生动态效果的技术。文章介绍了两种实现方式:代码控制(通过Sprite数组和定时切换)和使用Unity的Animation窗口直接拖拽序列帧制作。同时还讲解了如何通过Animator组件用代码控制动画播放,如响应键盘输入触发动画状态切换。核心原理在于利用人眼视觉暂留效应,当图片切换间隔足够短时(如0.03秒),离散帧就能形成连续动画效果。
2025-09-23 16:37:36
478
原创 Unity-动画基础
Unity动画系统摘要:Unity提供了两种动画系统,新Mecanim系统(基于Animator组件)和老Animation系统。通过Animation窗口可创建关键帧动画,记录对象属性随时间的变化。动画状态机(Animator Controller)用于管理不同动画状态及转换条件,支持参数控制切换。代码可通过Animator组件控制状态机参数实现动画切换,还支持动画事件触发特定逻辑。新系统功能更强大,支持层级、混合等复杂功能,而老系统适合简单动画需求。
2025-09-22 15:22:28
1785
原创 Unity2D-Tilemap瓦片地图
Unity的Tilemap瓦片地图功能是快速构建2D游戏场景的重要工具。摘要如下: Tilemap通过复用小图拼接大地图,提升2D场景制作效率,支持矩形/六边形/等距瓦片布局 创建方式:通过Assets菜单或TilePalette窗口创建,可设置碰撞体类型、色调等参数 提供多种编辑工具:画笔/框填/橡皮擦/填充工具,支持快捷键操作 关键特性: 支持多层绘制 可添加规则瓦片(RuleTile)实现智能拼接 支持动画瓦片(AnimatedTile) 提供多种特殊笔刷(随机/线性/组合笔刷) 脚本控制:通过Til
2025-09-22 15:14:14
1086
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅