我只是问是否有任何可能性隐藏“对象选择器”(小旋钮/菜单旁边的一个ObjectField)在自定义检查器.我有一些情况下,更改被禁用(DisableGroup),我想也隐藏旋钮,而内容无论如何不能更改.
另外,为了让用户更容易,我考虑将字段设置得更高(EditorGUIUtility.SingleLineHeight * 2
)-〉选择器也会被拉伸,看起来有点糟糕^^
示例:
using UnityEditor;
using UnityEngine;
public class Bla : MonoBehaviour {
[CustomEditor(typeof(Bla))]
public class BlaEditor : Editor
{
private AudioClip _clip;
public override void OnInspectorGUI()
{
EditorGUI.BeginDisabledGroup(true);
// do some magic to hide the object picker
_clip = (AudioClip) EditorGUILayout.ObjectField("some label", _clip, typeof(AudioClip), false);
EditorGUI.EndDisabledGroup();
}
}
}
我想坚持使用ObjectField
而不是简单的Label,原因有两个:
- 即使在禁用的`ObjectField上|“ping”功能仍在工作。(如果你点击它,相应的资产会在层次结构中突出显示。)这显然不是标签的情况。
- 用户不应该混淆与完全不同的期待控制,但我宁愿只想消除一些不必要的混乱。
4条答案
按热度按时间3df52oht1#
您可能会找到一种通过使用样式表来隐藏对象选择器的解决方案。
如果你想要的只是 * 显示 * 一些引用,你可以使用一个简单的按钮,基本上像文本字段一样,添加一个图像,然后自己从代码中ping对象。
编者:
gmxoilav2#
我有另一个解决办法忽略此对象拾取器的拾取结果,虽然拾取器还在,可以显示拾取器窗口,但拾取不工作。
(我仍然不知道如何隐藏这个按钮和pickerwindow,〉〈),这个答案也发布在unity answers上。
下面是代码:
ruoxqz4g3#
我需要做一些类似的事情,并找到了一种方法,通过单步执行UIToolkit调试器中的ObjectField来做到这一点。小对象选择器按钮的类型是隐藏的,所以我们不能真正使用类本身。
这个解决方案使用UIToolkit,所以不幸的是它不能与Unity Editor IMGUI一起工作,但希望它能对某人有所帮助。
简单步骤的解决方案:
1.找出ObjectFieldSelector的uss样式类是什么。
1.递归搜索ObjectField的子级,以查找包含uss样式类的VisualElement。
1.将可见性设置为false。全部完成!
whitzsjs4#
谢谢你的回答。尝试了更多的工作,使它更像统一内置的一个。
像这样使用它