Unity扩展编辑器利用反射一键改语言

在下不才,英语不太行,写代码时候又不得不用Unity编辑器里的组件(英语),比如camera,transform等等。因此突发奇想,想扩展编辑器达到一键修改编辑器语言,查看组件中的信息,然后再改回英语(主要是不想打开Edit/Preferences/language中打开修改)
以下奉上代码:

using System.Reflection;//反射所需命名空间
using UnityEditor;//导入Unity编辑器的命名空间
using UnityEngine;//系统语言所需要的命名空间
public class Custom_Menu 
{
    [MenuItem("Tool/ChangeLanguage",false)]//扩展编辑器的菜单栏
  public static void ChangeLanguage()
    {
        var menuPath = "Tool/ChangeLanguage";
        bool mChecked = Menu.GetChecked(menuPath);
        Menu.SetChecked(menuPath, !mChecked);
        //开始执行反射
        Assembly assembly = Assembly.Load("UnityEditor");//加载命名空间
        Type type = assembly.GetType("UnityEditor.EditorGUIUtility");//获取类名
        MethodInfo mInfo= type.GetMethod("NotifyLanguageChanged", BindingFlags.Static | BindingFlags.NonPublic);//获取方法体,因为方法体是static和internal所修饰
        if (mChecked)
        {          
            object[] parameters = new object[] { SystemLanguage.Chinese };//添加参数(中文)
            mInfo.Invoke(null, parameters);//执行方法,传入参数
          	UnityEditorInternal.InternalEditorUtility.RequestScriptReload();
            //Debug.Log("mChecked为" + mChecked);
        }
        else
        {        
            object[] parameters = new object[] { SystemLanguage.English};
            mInfo.Invoke(null, parameters);
          	UnityEditorInternal.InternalEditorUtility.RequestScriptReload();
        }
    }
}

Unity编辑器内部修改语言的的方法体
最后,能修改成功了。为以后的开发做好准备

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值