在自己用unity做demo的过程中,想要从配置表中将UI界面的预制体加载到场景中,并且挂载对应的类,由于配置表中需要挂载的类是通过字符串配置的,因此想到了以反射的形式进行添加,做了以下尝试:

public class TestReflection : MonoBehaviour
    // Start is called before the first frame update
    void Start()
        string className = "Person";
        Type t = Type.GetType(className);
        //创建实例对象
        var obj = t.Assembly.CreateInstance(className);
        MethodInfo method = t.GetMethod("SetPersonName");
        method.Invoke(obj,new object[] { "Danny"});
public class Person
    public void SetPersonName(string name)
        Debug.Log("personName:" + name);

上述代码中,使用Type.GetTyoe()通过反射,将字符串转换为类,通过GetMethod函数可以获取类中的方法。

为了将反射后的类挂载到物体上,代码做出以下修改:

using UnityEngine;
using System.Reflection;
using System;
public class TestReflection : MonoBehaviour
    void Start()
        string className = "Person";
        Type t = Type.GetType(className);
        //创建实例对象
        var obj = t.Assembly.CreateInstance(className);
        MethodInfo method = t.GetMethod("SetPersonName");
        method.Invoke(obj,new object[] { "Danny"});
        //将函数挂载到物体上
        GameObject go = GameObject.CreatePrimitive(PrimitiveType.Cube);
        go.AddComponent(t);
        //注意此处无法使用泛型参数挂载函数  go.AddComponent<t>();
public class Person:MonoBehaviour
    public void SetPersonName(string name)
        Debug.Log("personName:" + name);
                    在自己用unity做demo的过程中,想要从配置表中将UI界面的预制体加载到场景中,并且挂载对应的类,由于配置表中需要挂载的类是通过字符串配置的,因此想到了以反射的形式进行添加,做了以下尝试:public class TestReflection : MonoBehaviour{        // Start is called before the first frame updat...
        /// </summary>
        /// <typeparam name="TParent"></typeparam>
        /// <typeparam name="TChild"></typeparam>
string str = "今天是个好天气,我今天被老师批评了一顿,Echo,是个好同学";
Console.WriteLine(str.Contains("Echo"));        //是否包含
Console.WriteLine(str.EndsWith("Echo"));        //以某个子串结尾
Console.WriteLine(str.StartsWith("今天"));        //以某个子串开头
Console.WriteLine(str.IndexOf("个"))
				
今天有群友问我如何用String的文本,转换成对应名的学习了下,感觉网络上有,不过表达的不够清晰,或者说我最讨厌那些专业术语连篇的博文!所以自己再总结下using System.Reflection;//反射的引用 namespace ConsoleApp2//命名空间 class TestCase//做实验的 public void Meth...