Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/unity3d/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 实例化新对象后对象引用不更新_C#_Unity3d - Fatal编程技术网

C# 实例化新对象后对象引用不更新

C# 实例化新对象后对象引用不更新,c#,unity3d,C#,Unity3d,我实例化了一个新对象,在旧对象到达边界后销毁它。对象在正确的位置实例化并具有正确的行为,但是一个脚本不会更新对新对象的引用,即使我已将其写入脚本中 碰撞事件: void OnTriggerExit2D(Collider2D other) { if (other.GetComponent<Rigidbody2D>() == projectile) { Respawn(); Ammo -= 1; SetAmmoCount()

我实例化了一个新对象,在旧对象到达边界后销毁它。对象在正确的位置实例化并具有正确的行为,但是一个脚本不会更新对新对象的引用,即使我已将其写入脚本中

碰撞事件:

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

我用了一些坏名字来引用对象和东西。是的,我正在实例化的对象是一个预置对象。

将您的重生函数替换为:

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

因此,在阅读了
Destroy()
之后,我又想起了我以前遇到的一个问题。使用
Destroy()
时,实际上也会销毁对该对象的引用。因此,在尝试创建新副本并将引用移到该副本时,会产生问题。您应该使用的是
GameObject.SetActive()
,然后引用将全部更新到带有实例化的新对象,并且引用将更新到我上面的问题中。

发布您的重生();函数代码
GameObject.Instantiate(Object,Vector3.zero,Quaternion.identity)?这段代码不应该编译。我想知道您正在实例化什么,以及该对象是如何声明的。这是预制的吗?再次更新您的代码。我使用一个公共游戏对象播放器引用Unity中的预置用下面的内容替换您的respawn函数,看看它是否也能工作什么是
GO
,以及您为什么要销毁它。你说它似乎找不到新的物体。你有错误吗?还是同一个问题,参考文献没有更新我考虑过,但我不知道GO是什么。很好,你自己想出来了。是的,给东西命名是我不喜欢的。不管怎样,谢谢你的帮助。
    void Respawn()
{
    GameObject.Instantiate(player, Vector3.zero, Quaternion.identity);

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