【发布时间】:2017-06-04 12:54:18
【问题描述】:
目前我正在开发一款联网的 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 函数中的代码出于某种原因仅在主机上调用,而不在任何客户端上调用。
【问题讨论】:
-
每个客户端都需要在他们的场景中有JetpackManager才能调用这个函数。
-
有什么错误吗?或您收到的日志?
标签: c# unity3d networking unity3d-unet