UnityEditor 常用类

UnityEditor 常用类

一、Selection 类

Selection 一般会配合 SelectionMode 枚举类使用

Selection 里的方法和变量均为静态

1.变量

Object activeContext:返回通过 SetActiveObjectWithContext 方法设置的当前上下文对象。

如果选中多个,会默认返回第一个:

int activeInstanceID:回实际的对象选择。包括预制件,不可修改的对象的InstanceID。
Object activeObject:返回实际的对象选择。包括预制件,不可修改的对象。
GameObject activeGameObject:返回活动状态的游戏对象(显示在检视面板中的对象) 含Assets 里的预制体。如果第一个不是 GameObject,会返回空。
Transform activeTransform:返回活动状态的 Transform(显示在检视面板中的对象)。如果第一个选中不在 Hierarchy 中,会返回空.

返回多个:

Object[] objects:场景中未过滤的选择(选中的所有东西)。 包括文件 预制体 图片等。
GameObject[] gameObjects:返回实际的游戏对象选择。包括预制件,不可修改的对象。返回 GameObject 数组,如果选中的有不是 GameObject,则不放入数组中。Assets 里的预制体也会放入。
Transform[] transforms:返回顶层选择,不包括预制件。如果选中的 Transform 中有父子关系的,会只放入父 Transform,不会放入子 Transform。
int[] instanceIDs:实际未过滤的场景选择返回实例id而不是对象。选中的所有东西的InstanceID。
string[] assetGUIDs:返回所选资源的GUID。Hierarchy 面板里面的选中不放入在内。

2.方法

  • Contains

bool Contains(UnityEngine.Object obj)

bool Contains(int instanceID)

返回对象是否包含在所选内容中。感觉不用介绍。

  • GetFiltered

UnityEngine.Object[] GetFiltered(Type type, SelectionMode mode)

T[] GetFiltered(SelectionMode mode)

返回按类型和模式筛选的当前选择。可在 Project 面板中使用。

  • GetTransforms

Transform[] GetTransforms(SelectionMode mode)

允许使用 SelectionMode 位掩码对选择类型进行精细控制。可在 Project 面板中使用。

  • SetActiveObjectWithContext

void SetActiveObjectWithContext(UnityEngine.Object obj, UnityEngine.Object context)

选择具有上下文的对象。没看懂。

3.SelectionMode 枚举类

SelectionMode 在使用时可以多个使用,中间使用 | 隔开。

Unfiltered:返回所有选择。
TopLevel:只返回最上面选择的转换。另一个选定转换的选定子转换将被过滤掉。(现在所有的里面找需要的类型,然后在这里面如果有父子关系,只返回父物体。)
Deep:返回所选内容以及所选内容的所有子内容。(会将子物体也返回。)
ExcludePrefab:排除选择里的所有预制体。
Editable:排除任何不可修改的对象。
Assets:只返回 Assets 目录下的资源。
DeepAssets:如果选择的是文件夹,则包括文件夹下的所有文件和子文件夹。

问题:

  • 使用 DeepAssets 的时候,类型不设置为 UnityEngine.Object,获取不到东西。
Selection.GetFiltered(typeof(GameObject),SelectionMode.Assets|SelectionMode.DeepAssets)

Selection.GetFiltered(typeof(Object),SelectionMode.Assets|SelectionMode.DeepAssets)
  • 在1号区选中文件夹时,Selection.objects 中不包含选中文件夹。但是2号区域选中就包含。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Htf03NVM-1687654624745)(image-20220422102153074.png)]

4.EditorUtility

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Unity Editor扩展是指通过编写代码来扩展Unity编辑器的功能。通过创建自定义的编辑器窗口、工具栏按钮、菜单项和面板等,开发者可以为自己的项目添加一些定制化功能,以提高开发效率和用户体验。 Unity提供了一套API来实现编辑器扩展,开发者可以利用这些API去创建自定义的编辑器界面。首先,我们需要创建一个继承自EditorWindow或Editor类的脚本,然后在这个脚本中实现我们想要的功能。比如,我们可以在自定义的编辑器窗口中创建一些GUI元素,如按钮、文本框、下拉菜单等,用于控制场景中的对象、调整参数或执行特定的操作。 另外,Unity还提供了一些常用的工具类,如SerializedObject、SerializedProperty等,以便开发者可以访问和修改Unity对象的属性。使用这些工具类,我们可以在编辑器扩展中实现对象的序列化、反序列化和检查等功能。 在开发过程中,Unity的编辑器扩展还可以与自定义的脚本进行交互。通过注册自定义的菜单项、工具栏按钮或快捷键,我们可以在编辑器中快速调用脚本的功能,并在自定义界面中显示脚本的运行结果。 总结来说,Unity Editor扩展是一种强大的工具,它可以帮助开发者提高开发效率和用户体验。通过编写代码,我们可以创建出各种各样的自定义编辑器界面,以满足不同项目的需求。无论是增加交互性、优化工作流程还是增加特定的功能,Unity的编辑器扩展都能提供灵活和强大的解决方案。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值