欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Unity通过字符串添加组件

程序员文章站 2022-07-13 22:10:36
...

之前旧版的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,如下图:
Unity通过字符串添加组件
而Rigidbody在UnityEngine.PhysicsModule程序集里面,所以正确的获取类型的方式是

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

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

string qualifiedName = typeof(Rigidbody).AssemblyQualifiedName

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