- 博客(18)
- 收藏
- 关注
原创 Lua生命周期的实现LuaBehaviour
然后写一个Clear方法,在OnDesotory和OnApplicationQuit里调用一下,把这些注册的监听都释放掉。然后在对应的start里调用m_LuaStart,Update里调Update。③配置脚本运行环境 LuaTable m_ScriptEnv。①继承Unity的MonoBehaviour。⑤初始化 脚本运行环境、Lua生命周期函数。④接收Lua的生命周期函数。
2026-05-11 00:26:32
21
原创 Lua的加载与管理
本文介绍了基于LuaManager的XLua辅助框架设计方案。该框架通过分层缓存机制管理Lua资源,实现Lua与C#的双向调用:1)缓存Lua文件名、脚本信息和LuaEnv环境;2)自定义Loader实现脚本查找;3)提供LuaEnv.Dostring和LuaFunction两种调用方式;4)采用委托监听机制解决异步加载时序问题,通过脚本数量比对判断加载完成状态。该框架为Lua与C#交互提供了基础而关键的实现方案。
2026-05-10 20:37:55
27
原创 Unity - Input System - 新输入系统
本文介绍了Unity InputSystem的基本实现方法和自定义键模块开发流程。主要内容包括:1)基础配置步骤:导入InputSystem包、创建ActionMaps配置输入集合、生成C#类简化调用;2)按键监听实现:详细说明帧轮播检测和事件回调两种监听方式;3)自定义改键功能:通过RebindManager实现按键重绑定,包含冲突检测、JSON存储加载等核心功能。文章提供了完整的代码示例,包括单例模式实现、绑定操作处理、键位冲突检查等关键技术点,为开发者快速掌握InputSystem的自定义输入功能提供
2026-05-10 12:46:08
41
原创 Lua的语法要点和面对对象实现
本文总结了Lua语言的核心语法特性:1)变量声明规则(local局部/无前缀全局);2)多种循环结构(for/while/repeat)及遍历方式(ipairs/pairs);3)方法调用(.与:的区别);4)table作为唯一数据结构;5)协程操作(create/resume/yield);6)元方法(__index/__newindex)的作用。重点阐述了如何用table和元表实现面向对象三大特性:通过__index实现封装与继承,方法重写实现多态,并给出了类构造的new方法实现方案。文中还对比了Lua
2026-05-09 02:14:59
351
原创 热更新的框架回顾
本文介绍了Unity热更新框架的开发流程与策略。主要内容包括:资源热更新步骤(构建Bundle、加载管理)、代码交互方案(C#与Lua双向调用)、两种Bundle打包策略(按文件夹/按文件各具优劣)以及资源加载流程。同时对比分析了整包与分包两种热更新方案的优缺点:整包首次更新少但安装包大,分包安装包小但首次更新久。实施时需注意异步加载、版本校验等关键环节,通过合理选择打包策略和更新方案来优化用户体验。
2026-04-20 00:46:09
44
原创 背包数据的二进制优化
②二进制背包:通过二进制数组来存储各种数据,实际上是定义一种结构体来存储物品数据,而用二进制数组来存储结构体,这样根据结构体的size来指针寻找物品数据。①常规背包:通过Dictionary字典或者List列表来存储各种数据。三、总结:基本理解二进制流背包的原理,后续有新理解再继续补充。④可以直接发网络信息,或者接收网络数据。②通过指针操作,固定数组,无GC消耗。一、前言:回顾背包数据存储。①不需要序列化和反序列化。
2026-04-01 00:36:24
30
原创 网络同步优化
本文总结了网络同步优化的几个关键点:1)采用增量同步和事件驱动机制,通过观察者模式减少同步数据量;2)引入客户端预测和平滑修正机制应对网络延迟;3)实现按需加载,只同步可见实体;4)设计回滚和延迟补偿机制,确保高延迟玩家的游戏体验。这些优化措施有效提升了网络同步效率,后续还将继续完善补充。
2026-04-01 00:02:03
22
原创 游戏开发-序列化打包-缓存机制
本文对比分析了ProtoBuf和JSON两种序列化方式在数据打包/解包上的实现差异。ProtoBuf采用二进制流存储,通过内存流和索引编号高效处理数据;JSON则转换为字符串形式,占用更多空间。文章详细介绍了两种技术的具体实现步骤,包括消息头添加、粘包/半包处理机制。此外,还探讨了游戏开发中的三种缓存机制:配置数据缓存采用Dictionary存储本地JSON,UI资源缓存通过UIElement类管理,消息队列缓存解决子线程消息处理问题。最后指出不同消息类型需要建立字典实现差异化处理,总结了网络数据传输和缓存
2026-03-27 03:40:10
228
原创 内存管理与GC优化
本文系统介绍了游戏开发中的垃圾回收(GC)机制。首先解释了GC的基本概念,包括托管堆与非托管堆的区别,以及Unity、C#和Lua三种不同的GC系统。详细阐述了GC的三种核心模式、工作流程和触发条件,包括被动触发和主动调用的方法。文章重点分析了影响GC性能的因素,如托管对象数量和堆大小,并介绍了Unity和Lua使用的不同回收算法。最后针对游戏开发提出了优化GC性能的实用建议,包括控制GC时机、使用对象池、减少字符串创建等方法。通过理解GC的核心机制,开发者可以更好地管理内存,提升游戏性能。
2026-01-21 17:42:01
475
原创 403 Forbidden Host by NetBox Version 2.8 Build 4128
本文总结了使用NetBox搭建临时服务器时常见的403、404和连接问题的解决方法。403错误通常由未配置域名或访问目录导致,404错误多是文件路径错误,连接失败则可能是端口占用。文章详细说明了正确的配置文件结构,包括域名、端口和根目录设置,并强调根目录名称必须与配置一致。这些经验分享旨在帮助开发者快速解决NetBox服务器的常见配置问题,避免因收费内容而走弯路。
2026-01-02 11:51:49
270
原创 2D游戏场景对象与角色的交互
本文探讨了游戏开发中场景物品交互的设计优化方案。针对宝箱类物品,提出使用双碰撞组件方案(一个用于物理碰撞,另一个用于交互检测)替代地块组合方案,解决了移动性、维护性和触发重叠问题。在交互逻辑方面,采用距离优先算法,通过逻辑层优化减少物理检测开销(从O(n)降为O(1))。特别指出物理检测比逻辑计算开销大的三个原因:浮点运算、跨语言调用和缓存维护。最后强调保留5个候选检测对象的重要性,避免角色快速移动时出现交互窗口期问题。这些方案有效平衡了功能实现与性能优化的关系。
2025-12-15 01:16:21
317
原创 cocos-spine骨骼动画结束后的回调事件怎么玩
本文分享了使用sp.Skeleton动画Listener的经验。作者提到官方文档和免费资源难以理解,最终在昆仑的山头网站找到完整解决方案。重点介绍了setCompleteListener的使用方法:通过trackEntry参数获取骨骼组件引用,并演示如何获取当前动画名称进行判断。文章指出该网站还包含其他回调API的详细说明,建议开发者前往查阅。最后作者吐槽了付费教程现象,呼吁大家分享实用免费资源。全文简要清晰地介绍了关键实现方法,并提供了可靠的学习渠道。
2025-09-25 00:06:26
345
原创 游戏装备拖拽系统设计与实现
本文介绍了游戏中装备拖拽系统的设计与实现。系统采用重叠检测而非射线检测,主要由三部分组成:装备物品(存储装备信息)、装备槽(存放装备)和拖拽管理器(管理拖拽过程)。文章重点讨论了拖拽功能的实现细节,包括点击监听、拖拽移动控制、层级处理等常见问题及解决方案。针对拖拽过程中可能出现的物品重叠、事件穿透等问题,提出了将物品设为Canvas顶层节点、添加边界检测等优化方案。最后说明了拖拽结束后的处理逻辑,包括装备归位、装备槽交互等。文章分享了开发过程中遇到的实际问题和解决方法,为类似功能的实现提供了参考。
2025-09-23 23:02:18
2299
原创 ECS框架下的技能管理与释放
本文分享了基于ECS框架思想的技能系统设计思路。通过将技能与角色解耦,使用skillManager管理技能存储和释放:1)技能信息存储在skillData中;2)skillDeploy作为技能释放器父类,各技能继承扩展;3)skillManager调用释放器执行技能。该系统可通用到角色和怪物,普通攻击、移动等也可采用类似组件化设计,实现统一管理。这种设计模拟了ECS框架的实体-组件-系统结构。
2025-09-20 18:19:29
369
原创 Mock技术助你解决前后端进度差
本文分享了前端开发中使用Mock技术的几种方法。作者介绍了本地Mock(在代码中直接返回自定义Promise数据或使用JSON文件)、接口文档Mock工具(如Apifox)、第三方Mock库以及Mock服务器等方案。重点比较了不同方法的优劣,指出本地Mock最常用,而API管理工具最具性价比。这些技术能有效解决前后端开发进度不一致时,前端需要模拟后端接口的问题,帮助团队更高效地进行开发协作。
2025-09-08 19:40:17
666
原创 客户端Http网络通讯
本文分享了作者在学习前端HTTP请求时实现的一个基于fetch的HttpClient工具。文章对比了fetch、xhr和axios三种请求方式的优缺点:fetch简单易用但功能有限,xhr兼容性好但写法繁琐,axios功能全面但需要额外引入。作者采用单例模式封装了基础请求方法requestWithTimeOut,支持设置超时时间,并实现了get/post方法调用。还介绍了请求拦截器(自动添加token)和响应拦截器(处理业务状态码)的设计思路,建议将接口统一管理以便团队协作。虽然实现简单,但体现了网络请求的
2025-09-08 17:16:48
1397
原创 简易对象池的实现
本文介绍了一个简易对象池的实现方案。该方案采用单例模式设计,使用泛型字典存储游戏对象,以字符串作为键名实现快速查找。功能包括:通过预制体创建对象(支持设置初始位置和方向),以及回收对象(仅隐藏不销毁)。该实现简单直接,适用于小型项目开发,但未包含对象销毁和字典清理等高级功能。整体设计注重实用性和易用性,能够满足基础的对象复用需求。
2025-09-05 18:40:58
129
原创 UI动态生成工具(UITools)
本文分享了作者实习期间开发UI工具库的经历。最初因误解需求,作者试图实现单一按钮复用方案,后经交流明确应使用预制体实现UI复用。作者参考Qt的UiTools方案,开发了一个基于对象池的UITools单例工具,通过CreateButton等方法动态创建和复用UI元素。该方案减少了资源冗余,但需要手动管理每个UI元素的位置和参数绑定。文章简要介绍了实现思路,并指出优缺点,完整对象池实现需参考作者其他文章。
2025-09-05 18:38:45
362
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅