当前位置: 首页 > news >正文

Unity扩展编辑器功能的特性

1.添加分组标题

用于在Unity的Inspector视图中为属性或变量组创建一个自定义的标题或头部,有助于在Inspector中组织和分类不同的属性,使其更易于阅读和管理。

[Header("Common Properties")]
public float MouseSensitivity = 5;
public float SmothTime = 0.1f;void Start()
{//Header应用于属性和字段上
}

2.Assets创建功能添加菜单

用于在Unity的Project视图的右键菜单中创建一个新的自定义资源(Asset)。这个属性通常用于脚本,这些脚本定义了可以在Unity项目中被实例化为Asset的自定义数据类型。

[CreateAssetMenu(menuName ="MyCustomMenu/CustomData")]
public class MyCustomData : ScriptableObject
{//CreateAssetMenu主要应用于类上
}

3.工具栏添加菜单

用于在Unity编辑器的菜单栏中创建自定义菜单项。这个属性是UnityEditor命名空间中的一部分,并且它要求与之关联的方法必须是静态的

[MenuItem("CustomMenu/CustomFunc")]
public static void MenuCommand()
{//MenuItem应用于静态方法(static)上
}

4.添加组件菜单

用于自定义Unity编辑器中“Component”菜单下的显示选项,当你尝试向场景中的GameObject添加组件时。这个特性通常与继承自 MonoBehaviour的类一起使用,以便在Inspector窗口中提供自定义的添加方式。

[AddComponentMenu("MyCustomMenu/CustomComponent")]
public class MyCustomData : MonoBehaviour
{//与继承自MonoBehaviour的类一起使用
}

5.添加字段右键菜单

用于在对象的上下文菜单中添加一个自定义菜单项。当用户在Unity编辑器中选择一个具有这个特性附加的组件或资源,并右键点击时,该菜单项就会出现。

[ContextMenuItem("CustomOption", "FuncA")]
public int customValue;public void FuncA()
{//第一个参数为选项名称,第二个参数为被调用的函数的名称
}

6. 组件自定义编辑器

用于指定一个自定义的编辑器类来编辑某个特定的Unity组件(通常是继承自MonoBehaviour的类)

using System.Collections;
using UnityEngine;
using UnityEditor;// 这是你要为其创建自定义编辑器的组件  
[AddComponentMenu("MyComponent")]
public class MyComponent : MonoBehaviour
{public int someValue = 0;public bool isBool;// ... 其他组件字段 ...  
}// 自定义编辑器类,用于编辑MyComponent  
[CustomEditor(typeof(MyComponent))]
public class MyComponentEditor : Editor
{// 获取当前被编辑的MyComponent实例  private MyComponent myTarget;// 当编辑器被创建时调用  void OnEnable(){// 获取当前编辑的对象  myTarget = (MyComponent)target;}// 在Inspector窗口中绘制自定义UI  public override void OnInspectorGUI(){// 绘制默认的组件字段  DrawDefaultInspector();// 添加自定义的编辑器GUI  GUILayout.Space(10); // 添加一些间距  EditorGUILayout.LabelField("自定义编辑器扩展", EditorStyles.boldLabel);// 添加一个字段的自定义编辑器  myTarget.someValue = EditorGUILayout.IntField("自定义值", myTarget.someValue);// 确保更改被应用  if (GUI.changed){EditorUtility.SetDirty(myTarget); // 标记目标为已更改  }}
}

http://www.lryc.cn/news/387573.html

相关文章:

  • API类别 - UI核心
  • Redis-主从复制-配置主从关系
  • DigiRL:让 AI 自己学会控制手机
  • 04.Ambari自定义服务开发-自定义服务配置文件在Ambari中的设置方法
  • LSTM时间序列基础学习
  • 『Z-Workshop』 6月22日线下ALCOVE分享活动
  • 【机器学习】机器学习重要方法——迁移学习:理论、方法与实践
  • uniapp, ‍[⁠TypeError⁠]‍ “Failed to fetch dynamically imported module“ 报错解决思路
  • 四川省高等职业学校大数据技术专业建设暨专业质量监测研讨活动顺利开展
  • 深入解析三大跨平台开发框架:Flutter、React Native 和 uniapp
  • 【吊打面试官系列-MyBatis面试题】#{}和${}的区别是什么?
  • 解决HTTP 400 Bad Request错误的方法
  • Html的表单标签。(Java程序员需要掌握的前端)
  • Arduino (esp ) 下String的内存释放
  • 图灵虚拟机配置
  • 【SQL常用日期函数(一)】
  • C++操作系列(二):VSCode安装和配置C++开发环境
  • 【java12】java12新特性之File的mismatch方法
  • uni-app (通过HBuilderX 和 VS Code 开发)详细连接过程教学。
  • 安宝特方案 | AR术者培养:AR眼镜如何帮助医生从“看”到“做”?
  • 20240628每日前端---------解决vue项目滥用watch
  • 【LLM 评估】GLUE benchmark:NLU 的多任务 benchmark
  • Go线程调度器
  • 使用 fvm 管理 Flutter 版本
  • 若依-前后端分离项目学习
  • 使用adb shell getprop命令获取Android设备的属性
  • LNMP环境部署指南
  • [stm32]温湿度采集与OLED显示
  • 大模型知识库的使用
  • Docker - Oracle Database 23ai Free