unity学习:[RequireComponent(typeof (组件名称))]
在看别人的代码时,发现了这些
[RequireComponent(typeof (CharacterController))]
问了ds,现在记录一下
这个通常作为某个脚本里面的一个属性,这里当作它在脚本A中
作用是在编辑器中将脚本拖入某个实物的时候,自动添加这个组件
它的好处就是在编辑阶段,自动添加组件,而且无法被移除
它要注意的地方就是,如果在运行阶段,这个脚本A动态加载在某个对象上,这个组件不会自动创建的,因此在后面你获得这个组件会是空的
| 情况 | 推荐做法 | 原因 |
|---|---|---|
| 编辑器初始化 | ✅ 直接使用 [RequireComponent] | 自动处理依赖,安全可靠 |
| 运行时动态添加 | ⚠️ 需添加安全检查 | 避免空引用异常 |
| 频繁创建/销毁的对象 | ⚠️ 谨慎使用 | 建议用对象池管理组件 |
所以需要在awake阶段进行一次判空,然后用AddComponent方法手动添加这个组件
// 添加脚本的安全方法 GameObject AddPlayerMovement(GameObject target) { // 确保依赖组件存在 if(!target.GetComponent<CharacterController>()) { target.AddComponent<CharacterController>(); } return target.AddComponent<PlayerMovement>(); }
对于频繁创建/销毁的对象需要用到对象池来管理组件
以前都是对象池管理对象,这里是管理组件,让ds写了个
https://www.cnblogs.com/TreeOnEarth/p/18924180
浙公网安备 33010602011771号