【发布时间】:2019-04-09 05:29:18
【问题描述】:
我对 C# 中的脚本非常陌生,我正在尝试向对象添加组件,但我不断收到此错误:
“玩家”游戏对象没有附加“Rigidbody2D”,但脚本正在尝试访问它。
这是我目前的代码:
void Start()
{
GameObject.Find("Player");
gameObject.AddComponent<Rigidbody2D>();
Body = GetComponent<Rigidbody2D>();
}
private void FixedUpdate()
{
float moveHorizontal = Input.GetAxis("Horizontal");
float moveVertical = Input.GetAxis("Vertical");
Vector2 movement = new Vector2(moveHorizontal, moveVertical);
Body.AddForce(movement * speed);
}
【问题讨论】:
-
错误信息解释它,你的“玩家”对象没有刚体..只需选择它,然后添加一个刚体。
-
什么是
gameObject?您的脚本所附加的游戏对象是同一个游戏对象吗? -
@JoeSewell 是的,团结就是这样工作的。您可以使用
gameObject访问脚本附加到的 GameObject 类似地,使用transform等转换实例 -
@YamaçKurtuluş 那么
Start方法中的AddComponent和GetComponent应该引用同一个游戏对象吗? -
是的,通常我认为这会起作用。但是物理系统可能会导致设置其他一些东西。最好从编辑器中添加组件,尤其是刚体或网格等复杂对象。还有
GameObject.Find一开始什么都不做。