Unity技能编辑器(1)

技能编辑器需要继承EditorWinder进行编辑,所以我们需要再我们创建的项目中首先创建一个Editor编辑器文件夹,并将需要执行的编辑器代码放进去便可

下一步便是进行代码编写了

这一步实现的是将编辑器文件显示在菜单栏

 

实现的效果就是这样的 ,下一步我们将对立面进行分行选择编辑,这个时候我们就需要使用编辑器中OnGUI这个方法进行编辑器功能展示

这里是一些少量的编辑器分组,我们也可以自行进行扩展,最后实现的效果便是这样的

后期,我们也可以加入json进行存储和使用,本期就先了解一下编辑器的布局和一些常见的使用 

 

 

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,以下是一个简单的Unity ECS 技能编辑器的实现代码: 首先,我们需要创建一个名为“Skill”的组件,该组件存储技能的属性信息,例如技能名称、类型、伤害值等。在 ECS 中,我们使用结构体存储组件数据。例如: ```csharp public struct Skill : IComponentData { public string name; public SkillType type; public int damage; } ``` 在上面的代码中,我们定义了一个名为“Skill”的结构体,该结构体实现了 IComponentData 接口。我们在结构体中定义了技能的名称、类型和伤害值等属性。SkillType 是一个枚举,表示技能的类型。 接下来,我们需要定义一个名为“SkillSystem”的系统,该系统负责处理技能的创建、编辑和删除等操作。例如: ```csharp public class SkillSystem : ComponentSystem { protected override void OnUpdate() { // 处理技能的创建、编辑和删除等操作 } public void CreateSkill(string name, SkillType type, int damage) { // 创建一个新的技能 Entity entity = EntityManager.CreateEntity(); EntityManager.AddComponentData(entity, new Skill { name = name, type = type, damage = damage }); } public void EditSkill(Entity entity, string name, SkillType type, int damage) { // 编辑一个已有的技能 EntityManager.SetComponentData(entity, new Skill { name = name, type = type, damage = damage }); } public void DeleteSkill(Entity entity) { // 删除一个已有的技能 EntityManager.DestroyEntity(entity); } } ``` 在上面的代码中,我们定义了一个名为“SkillSystem”的系统,该系统继承自 ComponentSystem,用于处理技能的创建、编辑和删除等操作。在“CreateSkill”函数中,我们使用 EntityManager 创建一个新的实体,并将 Skill 组件添加到该实体中。在“EditSkill”函数中,我们使用 EntityManager 更新指定实体的 Skill 组件数据。在“DeleteSkill”函数中,我们使用 EntityManager 销毁指定实体。 最后,我们可以在 Unity 的 Inspector 界面中创建一个名为“SkillEditor”的自定义编辑器,该编辑器用于创建、编辑和删除技能。例如: ```csharp [CustomEditor(typeof(SkillSystem))] public class SkillEditor : Editor { private SkillSystem system; private string name; private SkillType type; private int damage; void OnEnable() { system = target as SkillSystem; } public override void OnInspectorGUI() { base.OnInspectorGUI(); EditorGUILayout.Space(); EditorGUILayout.LabelField("Create New Skill"); name = EditorGUILayout.TextField("Name", name); type = (SkillType)EditorGUILayout.EnumPopup("Type", type); damage = EditorGUILayout.IntField("Damage", damage); if (GUILayout.Button("Create")) { system.CreateSkill(name, type, damage); } EditorGUILayout.Space(); EditorGUILayout.LabelField("Edit Skill"); foreach (var entity in system.GetEntities<Skill>()) { Skill skill = EntityManager.GetComponentData<Skill>(entity); EditorGUILayout.BeginHorizontal(); if (GUILayout.Button("Edit")) { name = skill.name; type = skill.type; damage = skill.damage; } EditorGUILayout.LabelField(skill.name); EditorGUILayout.EndHorizontal(); } name = EditorGUILayout.TextField("Name", name); type = (SkillType)EditorGUILayout.EnumPopup("Type", type); damage = EditorGUILayout.IntField("Damage", damage); if (GUILayout.Button("Save")) { system.EditSkill(entity, name, type, damage); } EditorGUILayout.Space(); EditorGUILayout.LabelField("Delete Skill"); foreach (var entity in system.GetEntities<Skill>()) { Skill skill = EntityManager.GetComponentData<Skill>(entity); if (GUILayout.Button(skill.name)) { system.DeleteSkill(entity); } } } } ``` 在上面的代码中,我们创建了一个名为“SkillEditor”的自定义编辑器,并将其附加到我们的“SkillSystem”对象上。在编辑器中,我们可以创建、编辑和删除技能。在“Create New Skill”部分,我们可以输入新技能的名称、类型和伤害值,并使用“Create”按钮创建新技能。在“Edit Skill”部分,我们可以查看已有的技能,并使用“Edit”按钮编辑技能。在“Delete Skill”部分,我们可以查看已有的技能,并使用按钮删除技能。 希望这个简单的代码可以帮助您实现 Unity ECS 技能编辑器的功能。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值