unity如何通过反射调用Editor里的代码

代码如下:

        /// <summary>
        /// 通过反射调用Editor里的静态方法
        /// </summary>
        /// <param name="typeName">命名空间.类名</param>
        /// <param name="staticMethod">静态方法名</param>
        public static void CallEditorMethod(string typeName, string staticMethod, object[] parameters)
        {
#if UNITY_EDITOR
            // 获取编辑器程序集
            Assembly editorAssembly = AppDomain.CurrentDomain.GetAssemblies()
                .FirstOrDefault(a => a.FullName.StartsWith("Assembly-CSharp-Editor,"));
        
            // 获取你的编辑器工具类型(需要知道完整的命名空间)
            System.Type toolType = editorAssembly.GetType(typeName);
        
            if (toolType != null)
            {
                // 调用静态方法
                MethodInfo method = toolType.GetMethod(staticMethod, BindingFlags.Public | BindingFlags.Static);
            
                if (method != null)
                {
                    method.Invoke(null, parameters);
                }
            }
            else
            {
                Debug.LogError($"Cann't find type:{typeName}");
            }
#endif      
        }

 

posted @ 2026-03-19 16:58  太乙_真人  阅读(24)  评论(0)    收藏  举报