目前我正在开发一款联网的 2d 平台游戏。我有一个脚本应该实例化玩家喷气背包,名为 JetpackManager。然而,当玩家被生成到场景中时,代码只会将喷气背包生成到主机场景中,而不是客户端场景中。这导致只有主机场景正常工作,而客户端场景中的所有玩家都没有喷气背包。这是我的 JetpackManager 代码:
using UnityEngine;
using UnityEngine.Networking;
public class JetpackManager : NetworkBehaviour {
[SerializeField]
private Jetpack[] jetpacks;
[SerializeField]
private Transform jetPackHold;
private PlayerController playerController;
private Jetpack currentJetpack;
void Start(){
playerController = GetComponent<PlayerController> ();
if (isLocalPlayer) {
CmdEquipJetpack (0);
}
}
[Command]
void CmdEquipJetpack(int jetpackNumber){
RpcEquipJetpack (jetpackNumber);
}
[ClientRpc]
void RpcEquipJetpack(int jetpackNumber){
if (currentJetpack != null) {
Destroy (currentJetpack.gameObject);
}
currentJetpack = Instantiate (jetpacks[jetpackNumber], jetPackHold.position, jetPackHold.rotation);
currentJetpack.transform.SetParent (jetPackHold);
playerController.InitialiseJetpackVariables (currentJetpack);
}
}
所以本质上我的问题是RpcEquipJetpack
函数中的代码出于某种原因只在主机上调用,而不是在任何客户端上调用。