在 Unity 中获取 Object 对象的编辑器对象
2023-12-27 17:44:16
有这个需求的原因是,在编辑器的?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("拓展按钮"))
{
}
}
}
效果如图:
文章来源:https://blog.csdn.net/WPAPA/article/details/135250606
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!