如何访问Unity中实例化对象的组件



好的,下面是发生的事情我有这个";项目符号"带有";ApplyForce";方法,附在弹头预制上

public void ApplyForce (Vector2 direction)
{
const float magnitude = 5f;
GetComponent<Rigidbody2D>().AddForce(magnitude * direction, ForceMode2D.Impulse);
}

以及一个";船舶;脚本,该脚本将实例化一个Bullet并尝试访问它的";项目符号"组件,然后访问";ApplyForce";在船舶面对的同一方向上施加力的方法

// check for shooting input (left ctrl key) and fire
if (Input.GetKeyDown(KeyCode.LeftControl))
{
GameObject bullet = Instantiate(bulletPrefab, transform.position, transform.rotation);
bullet.GetComponent<Bullet>().ApplyForce(thrustDirection);
}

问题是,它不起作用。它发送以下错误:

NullReferenceException:对象引用未设置为对象的实例Ship.Update(((位于Assets/scripts/Ship.cs:56(

我知道我的问题是如何正确访问新实例化的GameObject,但我找不到正确的方法。所以在这里我请求您的帮助。

我为任何可能激怒你的新手错误道歉,因为我对编码/编程相当陌生,并且对这个几乎没有经验

好吧,伙计们,我发现了问题:我是个十足的白痴!:D

我忘了把子弹脚本附加到子弹预制上

第56行是哪一行?你可以尝试的一件常见的事情是:

bullet.GetComponentInChildren<Bullet>().ApplyForce(thrustDirection);

如果这仍然不起作用,并且是第56行,请确保'thrtDirection'变量不为null。

最新更新