登录
  • 欢迎访问 Sharezer Blog

Unity GetType(string)得到Type

Unity sharezer 7021次浏览 已收录 0个评论

Unity中的类,能过正常调用Type.GetType()得不到Type

可能通过程序集取得

Unity有运行时和编辑器时两个程序集,分别为:

  • Assembly-CSharp
  • Assembly-CSharp-Editor

通过Assembly.GetExecutingAssembly()获取包含当前执行的代码的程序集

//从当前执行的程序集中获取Type
public Type GetType(string TypeName)
{
    return System.Reflection.Assembly.GetExecutingAssembly().GetType(TypeName);
}

Unity的官方组件在UnityEngine程序集中,可以通过以下方法获取到

//从UnityEngin中获取
public Type GetUnityType(string TypeName)
{
    string namespaceStr = "UnityEngine";
    if (!TypeName.Contains(namespaceStr))
        TypeName = namespaceStr + "." + TypeName;

    var assembly = System.Reflection.Assembly.Load(namespaceStr);
    if (assembly == null)
        return null;

    return assembly.GetType(TypeName);
}

Unty中新增一个Types.GetType()

源码:

//从UnityEngin中获取
public Type GetUnityType(string TypeName)
{
    string namespaceStr = "UnityEngine";
    if (!TypeName.Contains(namespaceStr))
        TypeName = namespaceStr + "." + TypeName;

    var assembly = System.Reflection.Assembly.Load(namespaceStr);
    if (assembly == null)
        return null;

    return assembly.GetType(TypeName);
}

故效果和Assembly.Load(assemblyName)一样。


Sharezer , 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明Unity GetType(string)得到Type
喜欢 (7)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址