我在實例化一個新對象,一旦它擊中邊界就銷燬舊對象。該對象在正確的位置實例化並具有正確的行爲,但是一個腳本不會更新對新對象的引用,即使我已將它寫入腳本中。對象引用在新對象實例化後不會更新
碰撞事件:
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");
}
每次我運行遊戲它似乎並沒有能夠找到新對象。然而,我已經使用這種方法更新對象引用在其他腳本爲同一個對象,它工作得很好。不知道我做錯了什麼。
重生方法:
void Respawn()
{
GameObject.Instantiate(player, Vector3.zero, Quaternion.identity);
projectile.isKinematic = true;
isSpawned = true;
}
它編譯我用一些不好的名字來引用的對象和事情。是的,我正在實例化的對象是預製件。所以讀成Destroy()
多一點,我突然想到一個問題我之前具有
void Respawn()
{
GameObject obj = GameObject.Instantiate(player, Vector3.zero, Quaternion.identity) as GameObject;
obj.tag = "Damager";
projectile.isKinematic = true;
isSpawned = true;
}
Post your Respawn();函數代碼 – Programmer
'GameObject.Instantiate(Object,Vector3.zero,Quaternion.identity);'?該代碼不應該編譯。我想知道你在實例化什麼以及如何聲明這個對象。這是預製嗎?再次更新您的代碼。 – Programmer
我使用一個公共的GameObject播放器來引用統一的預製 – geolaw