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

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

  • 6
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值