在 Unity 中获取 Object 对象的编辑器对象

有这个需求的原因是,在编辑器的 Inspector 逻辑中,写了许多生成逻辑。

现在不想挨个在 Inspector 上都点一遍按钮,所以就需要能获取到它们的编辑器对象。

发现可以借助官方的 UnityEditor.Editor.CreateEditor 方法达到目的,如下:

public static TEditor GetEditorObjByRuntimeObj<TEditor>(UnityEngine.Object runtimeObj) 
    where TEditor : UnityEditor.Editor
{
    var editorType = typeof(TEditor);
    var editorObj = UnityEditor.Editor.CreateEditor(runtimeObj, editorType) as TEditor;

    return editorObj;
}

如果我们想扩展 Unity 的原生组件,也可以借助这个方法来实现。

[CustomEditor(typeof(Transform))]
public class TransformExt : Editor
{
    private Editor m_editor;
    
    void OnEnable()
    {
        var assembly = Assembly.GetAssembly(typeof(Editor));
        var type = assembly.GetType("UnityEditor.TransformInspector", true);
        m_editor = Editor.CreateEditor(target, type);
    }

    public override void OnInspectorGUI()
    {
        // base.OnInspectorGUI();
        
        // 调用系统绘制方法
        m_editor.OnInspectorGUI();
        
        GUILayout.Space(5);
        if (GUILayout.Button("拓展按钮"))
        {
        }
    }
}

效果如图:

  • 8
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要在 Unity 编辑器扩展随机选择场景对象,你可以使用以下方法: 1. 使用 Object.FindObjectsOfType() 方法获取当前场景的所有对象,并将其存储到一个数组。 2. 使用 Random.Range() 方法生成一个随机数,用它来选择数组的一个随机索引。 3. 使用所选索引来获取数组的随机对象。 这里是一个示例代码,它在 Unity 编辑器创建了一个按钮,点击该按钮将随机选择场景的一个 Cube 对象并将其设置为选状态: ```csharp using UnityEditor; using UnityEngine; public class RandomObjectSelector : EditorWindow { [MenuItem("Window/Random Object Selector")] static void OpenWindow() { RandomObjectSelector window = GetWindow<RandomObjectSelector>(); window.Show(); } void OnGUI() { if (GUILayout.Button("Select Random Object")) { // 获取场景所有的 GameObject 对象 GameObject[] objects = Object.FindObjectsOfType<GameObject>(); // 生成一个随机索引并获取随机对象 int randomIndex = Random.Range(0, objects.Length); GameObject randomObject = objects[randomIndex]; // 设置随机对象为选状态 Selection.activeGameObject = randomObject; } } } ``` 请注意,这个示例只是一个基本的概念演示,你需要根据自己的场景和需求进行修改和优化。同时,这个示例使用了 Unity 编辑器窗口来创建按钮,你可以将这个代码添加到你的自定义编辑器窗口,或者将代码添加到自定义菜单项或工具栏按钮的回调函数

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值