添加组件
本课属于 Coddy Unity 学习旅程的“Unity 脚本基础”单元。第 46 课,共 85 课。
gameObject.AddComponent<T>() 会在游戏运行时向对象添加一个 T 类型的新组件,并返回该组件,这样你就可以在接下来的几行中设置它。它属于 GameObject,脚本通过 gameObject 访问它。游戏开始时,这个篝火会为自己增添温暖的橙色光芒:
void Start()
{
Light glow = gameObject.AddComponent<Light>();
glow.color = new Color(1f, 0.5f, 0f);
glow.intensity = 2f;
}通过这种方式添加的组件会在游戏运行期间一直存在。停止“开始”后,对象就会恢复为场景中保存的状态,不再带有 Light。你自己的脚本也是组件:gameObject.AddComponent<Spinner>() 会添加一个 Spinner,它会像其他脚本一样开始运行。
大多数组件可以重复添加,但有些不行:一个对象最多只能有一个 Rigidbody,如果尝试再添加一个,Console 中会显示警告,而不是添加成功:Can't add component 'Rigidbody'。可能运行多次的代码会先检查对象是否已有该组件,再决定是否添加。
挑战
中等按下空格键会摇动棕榈树,椰子就会掉下来。
- 在
Update()中,当按下Input.GetKeyDown(KeyCode.Space)时,使用gameObject.AddComponent<Rigidbody>()添加 Rigidbody。 - 仅当椰子没有 Rigidbody 时才添加:
!TryGetComponent(out Rigidbody rb)。再次按下空格键不会添加第二个 Rigidbody。
点击“开始”,然后按空格键:椰子会掉到沙地上。然后点击“检查”。
亲手试试
using UnityEngine;
public class CoconutDrop : MonoBehaviour
{
void Update()
{
// Space:如果椰子还没有 Rigidbody,就给它添加一个
}
}
Unity 脚本基础中的所有课
自己练习: Unity 在线编辑器