Unity编辑器工具制作(一)

制作编辑器工具的意义

编辑器工具:unity中,我们经常需要制作各种工具以方便程序,美术,策划等进行开发。
通常的工具有:
针对Excel数据表的,数据和表现分离的开发中,数据的配置一般在Excel,但是Excel的数据不能直接拿来用(读取速度与文件大小),要经过转化成特定的数据文件(Json,ProtoBuf,二进制,自定义的数据文件等),转化后的数据才是我们要使用的数据,这个转化过程就需要使用编辑器工具批量转化,实现自动。
针对美术资源的,对美术资源进行批量处理。
针对程序的,一键打各种包(热更新包,基础包,服务器部署),一键生成地图数据,一键……
总结:编辑器工具的意义在于将开发过程自动化,简洁化,规范化,为团队制作各种在开发过程中需求的功能。

使用Odin制作编辑器工具

根据前面编辑器工具的意义可知,只要做出能够达到开发中需求的功能即是好工具人,那么不论是用Qt,WinForm或者任何图形化,非图形化程序都可以,但是既然是针对Unity资源的工具,那么必然涉及到Unity本身,所以是用unity自带的Editor窗口是最佳解决方案(当资源不涉及unity,或者是用unityEdior无法达到要求,那么就需要使用外部程序编写)

为什么使用Odin?
Unity自带的Editor完全可以实现绝大部分功能,使用Odin的目的是进一步简化编辑器的开发,Odin自带各种实例,拥有大量的特性标签,功能,能够更加方便快捷的实现编辑器功能,因此选择Odin

Odin使用

Odin有很多教程,官方也有大量的文档,国内也有大量基于Odin的博客和文章,我就不详细介绍了,主要还是介绍Odin实现编辑器功能的通用方法。
这里主要推荐一下官方的文档和海澜大佬的Odin系列教程
Odin官网:https://odininspector.com/
Odin文档:https://odininspector.com/documentation
海澜博客:https://aihailan.com/category/odin/

建立工具箱

继承OdinMenuEditorWindow类实现OdinMenuTree即可实现工具箱,后续所有的工具建议都放在工具箱里,这样更加整洁,不至于编辑器上方全是各种Editor窗口
MenuItem标签后面添加工具箱打开路径

public class MyOdin : OdinMenuEditorWindow
    {
        [MenuItem("Tools/我的工具箱")]
        private static void OpenWindow()
        {
            var window = GetWindow<MyOdin>();
            window.position = GUIHelper.GetEditorWindowRect().AlignCenter(1000, 500);
        }

        protected override OdinMenuTree BuildMenuTree()
        {
            OdinMenuTree tree = new OdinMenuTree();
            tree.Add("一键打包工具", OneKeyBuildlEditor.Instance, EditorIcons.SmartPhone);
            return tree;
        }
    }

每一个工具,都新建一个类,这里继承GlobalConfig,可以自动保存其中的属性,会自动在Assets下面新建一个同名文件夹存放ScriptableObject,具体点击GlobalConfig即可查看说明(已贴出)

public class OneKeyBuild : GlobalConfig<OneKeyBuild>
{
    [Title("一键打包按钮")] 
    public string stringTest;

    public List<string> stringListTest;

    [Title("一键打包按钮")]
    [Button(name: "按钮")]
    public void Button()
    {
    }
}
/// <summary>
  /// <para>
  /// A GlobalConfig singleton, automatically created and saved as a ScriptableObject in the project at the specified path.
  /// This only happens if the UnityEditor is present. If it's not, a non-persistent ScriptableObject is created at run-time.
  /// </para>
  /// <para>
  /// Remember to locate the path within a resources folder if you want the config file to be loaded at runtime without the Unity editor being present.
  /// </para>
  /// <para>
  /// The asset path is specified by defining a <see cref="T:Sirenix.Utilities.GlobalConfigAttribute" />. If no attribute is defined it will be saved in the root assets folder.
  /// </para>
  /// </summary>
  /// <example>
  /// <code>
  /// [GlobalConfig("Assets/Resources/MyConfigFiles/")]
  /// public class MyGlobalConfig : GlobalConfig&lt;MyGlobalConfig&gt;
  /// {
  ///     public int MyGlobalVariable;
  /// }
  /// 
  /// void SomeMethod()
  /// {
  ///     int value = MyGlobalConfig.Instance.MyGlobalVariable;
  /// }
  /// </code>
  /// </example>

打开Tools/我的工具箱,
弹出页面,左边是工具名,右边是工具页面,之后写的各类型工具都可以在这里使用
在这里插入图片描述

后面在工具箱里实现常见的编辑器工具,敬请期待,

如果有一个Odin工具网站或者类似Nuget,里面有各种各样基于Odin实现的工具,可以选择性下载就好了,避免重复造轮子,(比如一键打包,估计已经被写了无数遍了。。。),
官方倒是有一个社区,里面不少工具,不过感觉用的人少,而且里面国内开发者也比较少,很多工具也找不到(比如excel,打包工具可以找到一个)
Odin社区的工具:https://odininspector.com/community-tools

在这里插入图片描述

  • 2
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
Unity动画编辑器扩展是一种在Unity引擎中使用的功能,用于增强和定制动画编辑器的能力。通过扩展动画编辑器,开发者可以根据自己的需求添加新的功能和工具,使动画制作过程更加高效和便捷。 在扩展动画编辑器的过程中,开发者可以使用Unity的插件框架和API来创建自定义的窗口、工具栏、菜单和面板等界面元素。可以添加自定义的动画组件和控制器,以增加一些特殊的动画效果或行为。还可以编写脚本来实现自定义的动画算法、运动捕捉、路径编辑等功能,以满足不同类型的动画需求。 通过扩展动画编辑器,开发者可以更好地管理和组织动画资源,例如创建动画层级、动画事件管理,设置动画的播放速度和循环等。还可以进行动画的剪辑、合并、复制、粘贴和删除等操作,以快速调整动画的内容和表现效果。 另外,通过扩展动画编辑器,还可以实现与其他外部工具或软件的集成,例如使用第三方模型编辑器创建和导入动画,与物理引擎结合实现更逼真的动画效果,或者与VR/AR设备结合实现交互式的虚拟现实动画。 总之,Unity动画编辑器扩展为开发者提供了灵活和可定制的工具,使他们能够更加自由地创造各种精彩和富有表现力的动画作品。无论是游戏开发还是影视制作,扩展动画编辑器都能够为艺术家和开发者们提供更多的创作空间和可能性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值