Unity编辑器扩展

csdn推荐

编辑器扩展相关的脚本一般都放在Editor文件夹内,继承UnityEditor命名空间下的Editor类,该文件夹中的脚本只会对Unity编辑器起作用。

[OnInspectorGUI]:在Inspector界面上给某个特定组件添加功能

[OnSceneGUI]:在Scene视图上显示一个UI元素

[MenuItem]:在编辑器的菜单栏等位置上新增功能按钮

[EditorWindow]:编辑器界面扩展

[ScriptableWizard]:一般用来开发比较简单的生成器和初始化类型的功能来使用

[Attributes]:让声明信息与代码相关联,与C#的反射联系很紧密。

[AssetProcess]:自动处理资源导入的相关配置

[ScriptObject]:对于游戏中一些数据和配置可以考虑用ScriptObject来保存, 因为它不是只适用编辑器,所以不必放在Editor文件夹下 。

[Header(“xxx”)]:在Inspector面板显示提示内容xxx。如:[Header(“金币数”)] public Text _CoinNum;

[HideInInspector]:表示将原本显示在面板上的序列化值隐藏起来。

[SerializeField]:用于 非public 类型(如private), 使非public 类型也能序列化。表示将原本不会被序列化的私有变量和保护变量变成可以被序列化的,那么它们在下次读取的值就是你上次赋值的值。

[Serializable]: 用于 自定义的,非 abstract 的类. 结构体等 , 使这类型也能序列化,如编辑器工具开发。

如: [System.Serializable] public class SDKConfig : ScriptableObject

[ExecuteAlways]:该标签使脚本的实例始终执行,作为Play Mode的一部分和Editing,一般用于编辑器开发。默认情况下,MonoBehaviours仅在Play Mode下执行,当希望脚本作为编辑器工作的一部分执行某些操作时,可以使用[ExecuteAlways]属性。

编写编辑器存储配置数据的原理:

转成json数据写入Resources文件夹的txt文本中。

数据标记为脏,调用SaveAssets存入本地

//把配置的关卡数据标记为脏,即标记成已更改状态

//该方法针对Unity序列化资源(如Prefab,ScriptableObject、美术资源等类型)

EditorUtility.SetDirty(LevelEditorStorage);

//标记为脏的资源Unity不会立即保存到磁盘,调用如下方法Unity会重新导入修改后的资源

AssetDatabase.SaveAssets();

文章来源:https://blog.csdn.net/qq_43505432/article/details/139410042



微信扫描下方的二维码阅读本文

© 版权声明
THE END
喜欢就支持一下吧
点赞5 分享
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情代码图片

    暂无评论内容