实例化新对象后,对象引用不会更新

时间:2016-04-09 02:11:11

标签: c# unity3d

一旦新对象碰到边界,我就会在破坏旧对象后实例化它。该对象在正确的位置实例化并具有正确的行为,但是即使我已将其写入脚本,一个脚本也不会更新对新对象的引用。

碰撞事件:

void OnTriggerExit2D(Collider2D other)
{
    if (other.GetComponent<Rigidbody2D>() == projectile)
    {
        Respawn();
        Ammo -= 1;
        SetAmmoCount();
        Destroy(GO);
        UpdateReferences();
    }
}

UpdateReferences方法:

void UpdateReferences()
{
    projectile = GameObject.FindGameObjectWithTag("Damager").GetComponent<Rigidbody2D>();
    tran = GameObject.FindGameObjectWithTag("Damager").GetComponent<Transform>();
    GO = GameObject.FindGameObjectWithTag("Damager");
}

每次我运行游戏时,它似乎都无法找到新对象。但是,我已经使用这种方法在同一对象的其他脚本中更新对象引用,并且它工作正常。不确定我做错了什么。

Respawn Method:

    void Respawn()
{
    GameObject.Instantiate(player, Vector3.zero, Quaternion.identity);

    projectile.isKinematic = true;
    isSpawned = true;
}

它编译我使用了一些坏名称来引用对象和事物。是的,我实例化的对象是预制件。

1 个答案:

答案 0 :(得分:0)

将Respawn函数替换为:

void Respawn()
{
    GameObject obj = GameObject.Instantiate(player, Vector3.zero, Quaternion.identity) as GameObject;
    obj.tag = "Damager";
    projectile.isKinematic = true;
    isSpawned = true;
}