在自己用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...