ET框架技能编辑器:可视化配置与Lua脚本扩展
【免费下载链接】ET Unity3D 客户端和 C# 服务器框架。 项目地址: https://gitcode.com/GitHub_Trending/et/ET
在游戏开发中,技能系统的灵活性和易用性直接影响开发效率。传统手写代码配置技能的方式不仅效率低下,还难以满足复杂技能逻辑的需求。ET框架作为Unity3D客户端和C#服务器框架,提供了一套强大的技能编辑器解决方案,结合可视化配置与Lua脚本扩展,让开发者能够快速构建复杂的游戏技能系统。
技能系统基础:数值组件设计
ET框架的技能系统基于灵活的数值组件设计,采用Key-Value形式存储数值属性,支持多种数值影响方式。这种设计使得技能属性的配置和计算变得简单高效。
数值组件核心实现
数值组件NumericComponent使用字典存储各类属性,通过枚举NumericType定义属性类型。每个属性可以由基础值、增加值、百分比等多个子属性共同决定,计算公式统一为:
final = (((base + add) * (100 + pct) / 100) + finalAdd) * (100 + finalPct) / 100;
详细实现可参考Book/5.6数值组件设计.md。
数值变化事件机制
当数值发生变化时,系统会触发EventIdType.NumbericChange事件,其他模块可通过订阅该事件实现功能扩展,例如成就系统监听生命值变化:
[NumericWatcher(NumericType.Hp)]
public class NumericWatcher_Hp : INumericWatcher
{
public void Run(long id, int value)
{
if (value > 1000)
{
// 获得成就逻辑
}
}
}
技能编辑器可视化配置
ET框架的技能编辑器提供直观的可视化界面,支持拖拽式配置技能属性、效果和触发条件,无需编写代码即可快速创建基础技能。
编辑器界面组成
技能编辑器主要包含以下功能区域:
- 属性面板:配置技能名称、冷却时间、消耗等基础属性
- 效果列表:添加伤害、治疗、击退等技能效果
- 触发条件编辑器:设置技能释放的条件,如目标血量、距离等
- 预览窗口:实时查看技能效果
技能配置流程
- 创建新技能,设置基础属性
- 添加技能效果,配置效果参数
- 设置触发条件和目标筛选规则
- 保存技能配置,生成配置文件
技能配置文件通常保存为JSON格式,存储在Assets/Resources/目录下,如Assets/Resources/BuildinFileManifest.asset。
Lua脚本扩展技能逻辑
对于复杂的技能逻辑,ET框架支持通过Lua脚本进行扩展,实现自定义行为和特殊效果。
Lua脚本集成方式
- 在技能编辑器中指定Lua脚本路径
- 脚本中实现技能的自定义逻辑,如:
-- 技能释放前处理
function SkillPreCast(skill)
-- 检查目标是否在视野范围内
if not IsInSight(skill.caster, skill.target) then
return false
end
return true
end
-- 技能效果应用
function SkillApplyEffect(skill)
-- 造成伤害并附加减速效果
DealDamage(skill.caster, skill.target, 100)
AddBuff(skill.target, "Slow", 5, 0.5)
end
脚本与C#交互
Lua脚本可通过ET框架提供的API与C#代码交互,调用数值组件、事件系统等功能:
-- 获取施法者数值组件
local numericComponent = skill.caster:GetComponent("NumericComponent")
-- 增加攻击力
numericComponent:Set(10002, numericComponent:GetAsInt(10002) + 50)
技能系统应用实例
以MOBA游戏中的一个技能为例,展示如何使用ET框架技能编辑器配置技能:
技能配置步骤
- 在技能编辑器中创建"烈焰冲击"技能
- 设置基础属性:冷却12秒,消耗50法力值
- 添加"范围伤害"效果,半径3米,基础伤害200
- 添加"击退"效果,距离2米
- 绑定Lua脚本,实现火焰残留地面效果
Lua脚本实现
function SkillApplyEffect(skill)
-- 造成基础伤害
DealDamageArea(skill.caster, skill.position, 3, 200)
-- 击退范围内敌人
KnockbackArea(skill.position, 3, 2)
-- 创建火焰残留地面效果
CreateGroundEffect(skill.position, "Fire", 5)
end
-- 地面效果每2秒造成一次伤害
function OnGroundEffectTick(effect)
DealDamageArea(effect.position, 3, 50)
end
总结与扩展
ET框架的技能编辑器通过可视化配置降低了基础技能的开发门槛,同时结合Lua脚本扩展满足了复杂技能逻辑的需求。开发者可以根据项目需求进一步扩展编辑器功能,如添加技能连招编辑器、AI行为配置等。
进一步学习资源
- 官方文档:Book/1.1运行指南.md
- 事件机制:Book/3.4事件机制EventSystem.md
- 组件式设计:Book/4.1组件式设计.md
通过ET框架的技能编辑器,开发者能够快速构建灵活、高效的游戏技能系统,为游戏带来丰富多样的玩法体验。
【免费下载链接】ET Unity3D 客户端和 C# 服务器框架。 项目地址: https://gitcode.com/GitHub_Trending/et/ET
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考



