- 博客(52)
- 收藏
- 关注
原创 Unity_数据持久化_Json
本文介绍了Unity中使用JSON进行数据持久化的方法。主要内容包括:1) JSON基本语法和数据类型,如字符串、数字、布尔值及复杂对象结构;2) Unity内置的JsonUtility工具的使用,包括ToJson序列化和FromJson反序列化方法;3) 实际应用示例,展示了如何将游戏对象转换为JSON格式并存储到文件,以及从文件读取并还原为对象的过程。文中特别强调了JsonUtility对基础类型和自定义类的支持,以及其简单易用、线程安全的特点,为Unity游戏开发中的数据存储和交换提供了高效解决方案。
2025-08-15 17:42:10
1184
1
原创 Unity_导航网格
Unity导航网格系统为AI角色提供自动寻路能力,包含四个核心模块:Agents(配置代理属性)、Areas(定义导航区域)、Bake(生成导航网格)和Object(设置场景对象)。其工作流程包括配置代理参数、设置区域类型、标记场景对象并烘焙生成导航网格。系统提供NavMeshAgent组件实现寻路功能,支持速度、避障、路径规划等参数设置。注意事项包括合理设置Voxel Size平衡性能与精度,正确标记Navigation Static对象,以及分区域烘焙大型场景等优化策略。
2025-08-15 15:05:04
961
原创 Unity_2D动画
本文系统介绍了Unity中2D动画制作的两大核心技术:序列帧动画和骨骼动画。序列帧动画部分详细讲解了其基本原理、创建流程、关键参数设置、代码控制方法及优化技巧,并提供了完整的制作流程图。骨骼动画部分则深入解析了骨骼绑定、权重绘制、蒙皮系统、IK系统等核心概念,对比了不同动画技术的优缺点及适用场景。文章还列举了Spine、DragonBones等常用2D动画开发工具,为游戏开发者提供了全面的2D动画制作指南。
2025-08-13 15:01:18
1101
原创 Unity_TileMap
本文介绍了Unity中的Tilemap瓦片地图系统,包括其基本概念、工作原理以及与SpriteShape的异同。详细讲解了瓦片资源的参数配置、调色板窗口使用方法,以及矩形、六边形和等距瓦片地图的编辑技巧和注意事项。重点分析了Tilemap渲染器的两种模式(Chunk和Individual)及其适用场景,提供了组件架构解析和瓦片类型对比表。最后总结了常见问题及解决方案,为2D游戏地图制作提供了全面的技术指导。
2025-08-13 13:56:01
891
原创 Untiy_SpriteShape
Sprite Shape 组件使用指南 Sprite Shape 是 Unity 中用于创建可变形精灵图形的工具,包含三个核心组件: Sprite Shape Profile:定义形状轮廓的基本配置,包括纹理设置、角度范围控制(0-360度)和角点精灵选择。支持为不同角度区间指定不同的精灵图片,并控制显示优先级。 SpriteShapeRenderer:负责渲染控制,管理颜色、材质、遮罩交互和渲染排序等视觉效果参数。 SpriteShapeController:提供形状编辑功能,包含质量设置、开放/封闭曲线
2025-08-11 21:54:19
431
原创 Untiy_2D物理
本文介绍了Unity中的2D物理系统核心组件,包括刚体、碰撞器、物理材质和效应器。刚体(Rigidbody2D)使对象参与物理模拟,分为动态、运动学和静态三种类型;碰撞器(Collider2D)定义物体形状实现碰撞检测;物理材质控制摩擦力和弹性;效应器则产生特殊物理效果,如区域效应器制造风力、浮力效应器模拟流体、点效应器实现吸引/排斥效果。文章详细说明了各组件参数配置,并提供了C#代码示例,帮助开发者快速掌握2D物理系统的实现方法。
2025-08-11 16:34:43
1078
原创 Unity_数据持久化_IXmlSerializable接口
本文介绍了Unity中通过IXmlSerializable接口实现XML数据持久化的方法。该接口包含三个核心方法:GetSchema()、ReadXml()和WriteXml(),允许开发者完全控制XML序列化和反序列化过程。文章详细讲解了三种XML写入方式(属性、元素节点和包裹节点)和四种读取方式(属性、元素节点、循环读取和包裹节点),并提供了完整的代码实现示例。通过实现该接口,开发者可以灵活处理复杂数据结构在Unity中的持久化问题,满足不同场景下的XML格式需求。
2025-08-03 21:26:18
571
原创 Unity_数据持久化_XML序列化与反序列化
XML序列化与反序列化摘要 XML序列化是将对象转换为XML格式存储的过程,反序列化则是将XML数据还原为对象。核心步骤包括:1)定义包含无参构造函数的数据类;2)使用XmlSerializer进行序列化/反序列化;3)通过StreamWriter/StreamReader读写文件。支持的数据类型包括基础类型、数组和列表等。关键点:必须有无参构造函数,使用using自动释放资源,类型需严格匹配。XML序列化适用于配置存储、数据持久化等场景,是Unity中常用的数据存储方案之一。
2025-08-03 21:25:02
532
原创 Unity_数据持久化_XML存储相关
Unity中XML数据持久化操作指南 本文介绍了Unity中使用XML进行数据持久化的核心方法。重点讲解了XML文件存储路径的选择原则,推荐使用Application.persistentDataPath作为跨平台兼容的存储位置。详细说明了创建XML文档的五步法:创建XmlDocument对象、添加版本声明、创建根节点、添加子节点和保存文件。对于复杂数据结构,演示了如何存储列表和带属性的元素。同时提供了XML文件修改的完整流程,包括加载文件、修改节点内容、更新列表元素和属性值等操作。通过示例代码展示了在Un
2025-08-02 21:46:48
401
原创 Unity_数据持久化_C#处理XML文件
本文介绍了在Unity中使用C#处理XML数据的方法。主要内容包括:XmlDocument类的基础概念和核心功能,两种XML文件加载方式(从文件路径和字符串加载),XML节点访问方法(获取根节点、子节点、属性信息和多个同名节点),以及完整的XML处理示例代码。文中还对比了不同加载方式的优缺点,并总结了XmlDocument和XmlNode的主要方法和属性,为Unity开发者提供了XML数据持久化的实用指南。
2025-08-02 18:54:52
1070
原创 Unity_数据持久化_XML基础
本文介绍了Unity中XML数据持久化的基础知识。XML是一种可扩展标记语言,具有结构化、可读性强和跨平台等特点,适用于游戏配置、角色属性等数据存储。文章详细讲解了XML的基本语法规则,包括版本声明、编码设置和标签配对要求,并提供了示例代码。最后对比了XML与JSON、Binary等其他数据格式的特性差异,分析了各自在可读性、文件大小、解析速度等方面的优缺点,帮助开发者根据需求选择合适的持久化方案。XML特别适合需要手动编辑和版本控制的场景。
2025-08-02 13:10:27
381
原创 Unity_数据持久化_PlayerPrefs存储各数据类型
本文介绍了基于Unity PlayerPrefs的高级数据持久化管理器实现方案。该方案通过反射机制支持复杂对象的自动保存和加载,包括基本数据类型(int/float/string/bool)、集合类型(List/Dictionary)以及自定义类对象。管理器采用单例模式设计,提供SaveData方法进行对象序列化存储,并自动生成唯一key命名规则确保数据隔离。核心功能包括递归处理嵌套对象、集合类型遍历保存、以及类型判断与转换。配套测试类验证了该方案对各类数据结构的支持能力,为Unity项目提供了灵活的数据本
2025-07-31 21:29:54
563
原创 Unity_数据持久化_PlayerPrefs基础
Unity数据持久化是将游戏数据存储到硬盘或从硬盘读取的过程,主要包括基础概念、PlayerPrefs使用等内容。数据持久化通过序列化/反序列化实现内存与存储模型转换,用于保存游戏进度、用户设置和统计数据。Unity提供多种持久化方式:PlayerPrefs适合简单键值对存储,支持int、float、string类型;JSON/XML适合复杂数据结构;二进制序列化效率高。PlayerPrefs作为最简单的方案,具有Set/Get方法保存读取数据,需调用Save()手动存储,否则数据只在内存中。合理使用这些方
2025-07-31 11:43:48
879
原创 Unity_UI_NGUI_缓动
NGUI缓动系统为Unity UI提供了丰富的动画效果,包括缩放、透明度、位置、旋转和颜色变化等。核心组件包括5种Tween组件(Alpha/Position/Scale/Rotation/Color)和Play Tween组件,支持配置持续时间、延迟、播放方式(单次/循环/往返)和触发条件(点击/悬停/按下等)。开发中可通过TweenGroup管理多个动画,使用Animation Curve调整变化曲线,并设置Ignore TimeScale保证动画不受游戏暂停影响。最佳实践建议控制动画时长在0.1-0.
2025-07-29 15:44:48
627
原创 Unity_UI_NGUI_DrawCall
本文系统介绍了Unity中UI开发中的DrawCall优化技术。首先解释了DrawCall概念及其性能影响,通过文件拷贝的类比直观说明降低DrawCall的必要性。然后详细阐述了优化方法,包括图集技术、材质合并、静态/动态批处理等核心手段,并提供了NGUI中具体的优化技巧和最佳实践。文章还介绍了Unity、NGUI及第三方工具对DrawCall的监控方法,并针对常见问题给出了解决方案。这些优化技术能显著提升游戏性能,特别对移动端开发至关重要,建议在UI设计阶段就考虑性能优化,建立规范化的材质和资源管理流程。
2025-07-29 13:03:53
927
原创 Unity_UI_NGUI_事件响应函数
NGUI进阶篇介绍了两种事件响应方式:通过反射调用的基础事件函数(如OnClick、OnDrag)和更高级的UIEventListener/UIEventTrigger工具。UIEventListener适合代码动态添加,支持参数传递和复杂逻辑;UIEventTrigger则适合Inspector面板拖拽配置,操作更直观。两者主要区别在于添加方式、参数传递和适用场景,开发者可根据需求选择,文末提供了两种方式的具体实现示例代码。这些方法扩展了NGUI的事件处理能力,满足从简单到复杂的交互需求。
2025-07-29 09:49:14
483
原创 Unity_UI_NGUI_锚点组件
摘要:Unity的Anchor锚点组件用于UI元素的对齐和自适应布局,确保不同分辨率下的显示效果。主要属性包括UICamera、Container、Side(9宫格位置)及偏移调整参数(Relative/Pixel Offset)。使用建议指出NGUI控件通常内置锚点功能,仅在特殊需求时需单独添加组件。常见问题包括锚点失效、位置偏差等,可通过参数调整解决。该组件支持分辨率自适应,是UI布局的重要工具。(149字)
2025-07-28 21:10:50
266
原创 Unity_UI_NGUI_组合控件2
Unity UI控件使用指南:PopupList、Slider、ScrollBar和ProgressBar 本文介绍了Unity中常用的UI控件及其功能实现方法。PopupList用于创建下拉选择菜单,支持自定义选项和显示样式;Slider实现数值调节功能,可设置步进和方向;ScrollBar用于内容滚动控制,常与ScrollView配合使用;ProgressBar则用于显示任务进度等。每种控件都详细说明了制作步骤、关键属性和脚本控制示例,并提供了实用技巧,如动态选项管理、分步滑动设置和填充方向选择等。这些
2025-07-28 18:49:30
1195
原创 Unity_UI_NGUI_组合控件1
本文介绍了Unity中三种常用UI控件的功能与实现方法: Button按钮控件:用于响应点击操作,支持多种状态显示(普通/悬停/按下/禁用),提供两种事件监听方式(可视化拖拽和代码控制)。 Toggle开关控件:实现复选框/单选框功能,支持两种状态(开启/关闭),可组合使用实现单选功能,提供状态管理、视觉反馈和事件处理的方法。 Input输入框控件:用于文本输入,支持多种输入类型(标准/密码/数字等),可设置输入验证和键盘类型,包含激活状态、光标颜色等视觉设置。 每种控件都详细说明了使用场景、属性配置和代码
2025-07-28 12:06:56
1069
原创 Unity_UI_NGUI_三大基础控件
NGUI三大基础控件详解:Sprite用于显示中小尺寸图片,支持多种显示模式(Simple/Sliced/Tiled/Filled)和属性设置;Label提供丰富的文本控制功能,包括字体样式、溢出处理、对齐方式以及富文本支持;Texture适合直接显示大尺寸图片,无需打图集。三种控件均支持颜色调整、翻转、渐变等效果,其中Sprite和Texture还共享相似的显示模式设置。这些组件构成了NGUI界面开发的基础元素,满足不同UI场景的需求。
2025-06-30 15:21:49
670
原创 Unity_UI_NGUI_UI组件
NGUI核心组件解析 NGUI包含三大核心组件:UIRoot、Panel和EventSystem。UIRoot负责UI分辨率适配,提供Flexible(PC端)、Constrained(移动端)和Constrained On Mobiles(多平台)三种模式。Panel管理UI渲染顺序和裁剪功能,需注意所有UI控件必须作为Panel的子对象。EventSystem处理输入交互事件,支持多种输入方式和事件类型。理解像素、分辨率、DPI等概念对于UI适配至关重要,设计时需考虑主流和极端宽高比情况。
2025-06-24 18:07:38
564
原创 Unity基础-碰撞检测
Unity射线检测摘要 Unity中的射线检测(Physics.Raycast)是物理系统的重要组成部分,主要用于判断射线与碰撞器的相交情况。核心功能包括: 基础实现:通过创建Ray对象(起点+方向向量)或直接使用起点+方向参数进行检测 检测方式: 简单布尔检测 获取单个碰撞信息(out RaycastHit) 获取多个碰撞信息(RaycastAll/NonAlloc) 碰撞信息:RaycastHit结构体提供碰撞点、法线、距离等关键数据 应用场景:鼠标拾取、射击判定、激光检测等 注意事项包括参数顺序、检测
2025-06-16 18:57:45
711
原创 Unity基础-范围检测
Unity范围检测技术解析:通过物理系统在不产生实际碰撞的情况下判断指定区域内的碰撞器,适用于攻击范围、技能效果等场景。必备条件是被检测对象需具备碰撞器。检测方法分为盒形(OverlapBox)、球形(OverlapSphere)和胶囊形(OverlapCapsule)三种,各提供带GC开销的数组返回方法和无GC的NonAlloc版本。通过LayerMask层级系统可精确筛选检测对象。该技术为瞬时检测,不会创建实际碰撞器,是游戏开发中高效的范围判定解决方案。
2025-06-15 20:58:23
1445
原创 Unity基础-Line Renderer
Unity Line Renderer使用指南 摘要:LineRenderer是Unity中用于绘制线段的组件,适用于攻击范围、武器红外线等场景。本文介绍了基础用法和参数详解:(1)通过代码动态创建线段,设置宽度、颜色、材质和坐标点;(2)组件参数包括循环、宽度曲线、颜色渐变、顶点平滑度等;(3)两个应用实例:绘制圆形(通过三角函数计算圆周点)和鼠标轨迹(转换屏幕坐标为世界坐标)。关键点在于正确设置positionCount和SetPosition方法,以及坐标空间选择(useWorldSpace)。
2025-06-15 14:34:11
898
原创 Unity基础-Resources资源动态加载
卡顿的原因是从硬盘把数据读取到内存中是需要进行计算的,越大的资源耗时越长,会造成掉帧卡顿的现象。Resources加载一次资源过后该资源就一直放在内存中作为缓存,第二次加载时发现缓存中存在该资源会取出来直接使用,所以多次重复加载不会浪费资源,但会浪费性能,每次加载伴随着查找。注意:Resources.UnloadAsset方法不能释放GameObject类型对象,因为他会用于实例化对象,他只能用于不需要实例化的内容,比如图片、音效、文本等。注意:异步加载不能马上得到资源,至少要相隔一帧。
2025-06-11 17:07:07
1058
原创 Unity基础-协程
你可以简化理解迭代器函数:C# 看到迭代器函数和语法糖,就会把原本是一个的函数变成"几部分"。我们可以通过迭代器从上到下遍历这"几部分"进行执行,就达到了将一个函数中的逻辑分时执行的目的。
2025-06-10 13:38:41
711
1
原创 Unity基础-欧拉角和四元数
本文介绍了欧拉角和四元数在3D旋转中的关键作用。欧拉角直观易用,但存在万向节死锁问题;四元数通过复数扩展避免了这一缺陷,适合平滑插值与复杂旋转。文章对比了两者的优缺点,并演示了如何通过Quaternion.LookRotation实现高效转向控制,帮助开发者选择适合的旋转表示方法。
2025-06-07 13:07:25
1187
原创 Unity基础-数学向量
在Unity游戏开发中,向量(Vector) 是最基础且强大的数学工具之一,用于精确描述和计算游戏对象的 位置、方向、速度和物理行为。Unity 提供了 Vector2(二维)和 Vector3(三维)结构体,支持丰富的向量运算,包括加减乘除、点积、叉积、归一化等,使开发者能够轻松实现移动、旋转、碰撞检测、路径计算等核心游戏逻辑。
2025-06-06 19:48:04
457
原创 Unity基础-Mathf相关
本文介绍了Unity中的Mathf数学工具结构体及其应用。Mathf是Unity专为游戏开发封装的数学工具,与C#的Math类相比增加了适用于游戏的特殊方法。文章详细列举了常用数学计算方法(如绝对值、取整、钳制、幂运算等)和线性插值Lerp的两种实现方式(先快后慢和匀速移动),并通过示例代码展示了这些方法在对象移动中的实际应用。最后总结了Mathf在游戏开发中的四大典型应用场景:游戏对象控制、动画过渡、物理计算和游戏逻辑处理,为开发者提供了实用的数学工具参考。
2025-06-05 18:23:48
507
原创 C#的反射机制
反射是C#中的强大工具,使我们能够在运行时检查、使用和修改类型。虽然功能强大,但应当谨慎使用,在灵活性和性能之间取得平衡。反射最适合那些需要高度灵活性、动态行为的场景,如插件系统、序列化框架和依赖注入容器。希望这篇博客能帮助你更好地理解和应用C#的反射机制!
2025-04-07 21:39:52
1318
原创 Unity项目实战-订阅者发布者模式
订阅者发布者模式(也称为观察者模式)是一种设计模式,允许对象订阅事件并在事件发生时得到通知。这种模式通常用于解耦事件的发布者和订阅者,使得它们可以独立变化。
2025-02-18 17:10:11
838
原创 Java-数据结构基础1
节省存储空间适合处理大规模稀疏数据压缩和还原过程简单高效避免了普通队列的"假溢出"问题能够充分利用数组空间实现了队列的先进先出特性稀疏数组:棋盘游戏存储、地图数据压缩等循环队列:消息队列、打印机任务队列、实时数据处理等。
2025-02-16 20:56:32
950
1
原创 Unity状态机的实现方法二
单一职责每个状态只处理一种行为模式避免状态逻辑过于复杂开闭原则易于添加新状态不修改现有状态逻辑依赖倒置状态依赖抽象接口避免直接依赖具体实现。
2025-02-13 19:05:40
1195
1
原创 Unity状态机的实现方法一
控制灵活度完全自主控制状态转换逻辑可以方便地访问和修改游戏对象的任何组件能够实现复杂的状态嵌套和组合性能优势代码执行效率高内存占用小可以精确控制状态检查的频率调试便利性可以方便地添加调试信息状态切换逻辑清晰可见便于断点调试使用场景适合复杂的游戏逻辑控制需要频繁状态切换的情况需要与其他系统紧密集成的情况Normal, // 普通状态Attack // 攻击状态// 当前状态。
2025-02-12 22:16:22
1363
原创 Unity项目实战-Player玩家控制脚本实现
单一职责原则:每个类和方法都有明确的职责开闭原则:通过继承和抽象方法支持扩展里氏替换原则:子类可以替换父类而不影响程序正确性引入状态模式管理角色状态使用事件系统解耦模块间通信将配置数据抽离到ScriptableObject优化性能关键点。
2025-02-11 12:38:36
2463
原创 Unity状态机相关
提供可视化的状态管理支持复杂的动画过渡可通过代码灵活控制子状态机提供更好的组织方式合理规划状态机结构善用子状态机降低复杂度注意性能优化保持良好的代码实践。
2025-02-10 14:13:01
860
原创 Unity项目实战-简单特效系统的管理
从单一特效类型支持到多类型特效支持从简单的数组存储到高效的字典查找从分散的方法到统一的接口从基础功能到完善的特效管理系统最终版本不仅提供了更好的性能和可维护性,还为后续扩展提供了良好的基础。在实际开发中,应根据项目需求选择合适的实现方式,并注意性能优化和资源管理。
2025-02-09 18:28:18
926
原创 Unity Find方法详解
Find方法的选择根据查找范围选择合适的方法考虑性能影响优先使用性能更好的替代方案优化建议缓存频繁使用的引用在合适的生命周期调用使用更高效的替代方案保持良好的项目结构。
2025-02-07 11:56:40
1744
Unity-PlayerPrefs通用管理类
2025-08-01
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人