我想删除自己的玩家对象,但我无法使用销毁 |PUN2



我正在使用PUN2制作射击游戏,但我遇到了玩家没有消失的问题。玩家移动、使用PunRPC的外壳移动、子弹处理等都得到了实现。

当玩家的生命值变为0时,我会用以下代码摧毁玩家。

Player.cs

GameObject Player; // player object attached
int HP = 100; 
//If hit
public void Damaged(int damage)
{
photonView.RPC(nameof(UpdateHP), RpcTarget.All, damage)
}
[PunRPC]
void UpdateHP(int damage)
{
HP -= damage;
if(HP <= 0)
photonView.RPC(nameof(RemovePlayer), RpcTarget.All);
var hashtable = new Hashtable();
hashtable["HP"] = HP;
PhotonNetwork.LocalPlayer.SetCustomProperties(hashtable);
}
[PunRPC]
void RemovePlayer()
{
Destroy(Player)
}

流:从shell脚本执行Player.cs中的Damaged(int(,使用PunRPC计算体力,如果小于0,则使用PunRPC执行RemovePlayer((

调用photonView.RPC(名称为(RemovePlayer(,RpcTarget.All(将生成一个错误。

NullReferenceException:对象引用未设置为对象的实例


此外,当我在没有PunRPC的情况下使用Destroy((时,它只会从他的设备中消失,并对其他玩家可见。

不带PunRPC的Destroy((

GameObject Player; // player object attached
int HP = 100; 
//If hit
public void Damaged(int damage)
{
photonView.RPC(nameof(UpdateHP), RpcTarget.All, damage)
}
[PunRPC]
void UpdateHP(int damage)
{
HP -= damage;
if(HP <= 0)
RemovePlayer();
var hashtable = new Hashtable();
hashtable["HP"] = HP;
PhotonNetwork.LocalPlayer.SetCustomProperties(hashtable);
}
void RemovePlayer()
{
Destroy(Player)
}

正如mrPhilipp所说,通过执行PhotonNetwork.DDestroy((,我能够完全删除该对象。这在[PunRPC]之外是可能的。