Unity通过字符串添加组件

之前旧版的Unity提供了AddComponent(string name)的方法来提供字符串添加组件,可是由于性能不高被官方废弃了,那么现在如何使用字符串来添加组件呢?
可是由于需求难免会有需要通过字符串来添加组件,以达到程序灵活性高的目的,当然Unity官方还是明白的,所以提供了public Component AddComponent(Type componentType)的方法来解决。
通过Type.GetType(string typeName)来得到字符串对应的Type。

这里有个问题估计也是很多小伙伴遇到的,Type.GetType(typeName)能轻松获取到自定义类的类型,可是Unity的组件就不行,比如Type.GetType(“Rigidbody”)得到的就是空,来吧加上命名空间Type.GetType(“UnityEngine.Rigidbody”),结果还是不行,就以为获取不到unity的组件了,其实这还是你的名字没有写全的原因,少了是什么程序集。你没有给程序集,那就只有去当前的程序集里面去查找,当然是没有的咯。
我们来看看UnityEngine命名空间有多少的dll,如下图:
这里写图片描述
而Rigidbody在UnityEngine.PhysicsModule程序集里面,所以正确的获取类型的方式是

Type type = Type.GetType("UnityEngine.Rigidbody, UnityEngine.PhysicsModule")

有同学就要说了,怎么这么长的名字,我怎么知道那个组件是啥名字呢,这里可以通过

string qualifiedName = typeof(Rigidbody).AssemblyQualifiedName

来获取其程序集与类的全名。

猜你喜欢

转载自blog.csdn.net/qwsx789/article/details/80679210