我想删除自己的播放器对象,但我不能使用 Destroy | PUN2
I want to delete own player object, but I can't use Destroy | PUN2
我正在用PUN2制作一款射击游戏,但是遇到了玩家没有消失的问题。
实现玩家移动、shell 使用 PunRPC 的移动、子弹处理等。
我使用以下代码 Destroy() 当玩家的生命值变为 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)
}
Flow:从shell脚本执行Damaged(int) in Player.cs,计算物理strength with PunRPC,如果小于0,执行RemovePlayer() with PunRPC.
调用 photonView.RPC(nameof(RemovePlayer), RpcTarget.All); 会产生错误。
NullReferenceException: Object reference not set to an instance of an object
此外,当我在没有 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.Destroy () 我能够完全删除该对象。这在 [PunRPC] 之外是可能的。
我正在用PUN2制作一款射击游戏,但是遇到了玩家没有消失的问题。 实现玩家移动、shell 使用 PunRPC 的移动、子弹处理等。
我使用以下代码 Destroy() 当玩家的生命值变为 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)
}
Flow:从shell脚本执行Damaged(int) in Player.cs,计算物理strength with PunRPC,如果小于0,执行RemovePlayer() with PunRPC.
调用 photonView.RPC(nameof(RemovePlayer), RpcTarget.All); 会产生错误。
NullReferenceException: Object reference not set to an instance of an object
此外,当我在没有 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.Destroy () 我能够完全删除该对象。这在 [PunRPC] 之外是可能的。