C# 未在Unity3d c中的所有客户端上执行ClientRpc函数

C# 未在Unity3d c中的所有客户端上执行ClientRpc函数,c#,unity3d,networking,unity3d-unet,C#,Unity3d,Networking,Unity3d Unet,目前我正在开发一款网络2d平台游戏。我有一个脚本,应该是实例化的球员jetpack称为JetpackManager。但是,当玩家生成到场景中时,代码只会将jetpack生成到主机场景中,而不会生成到客户端场景中。这导致只有主机场景正常工作,而客户端场景中的所有玩家都没有Jetpack。这是我的JetpackManager代码: using UnityEngine; using UnityEngine.Networking; public class JetpackManager : Netwo

目前我正在开发一款网络2d平台游戏。我有一个脚本,应该是实例化的球员jetpack称为JetpackManager。但是,当玩家生成到场景中时,代码只会将jetpack生成到主机场景中,而不会生成到客户端场景中。这导致只有主机场景正常工作,而客户端场景中的所有玩家都没有Jetpack。这是我的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函数中的代码出于某种原因仅在主机上调用,而不是在任何客户端上调用

应该使用网络类实例化网络对象

网络实例化一个预置

给定的预置将在游戏中的所有客户端上实例化。 同步是自动设置的,因此没有额外的工作 卷入的位置、旋转和网络组号如下所示: 参数。请注意,在下面的示例中,必须设置一些内容 到编辑器中的PlayerRefab。你可以阅读更多关于 对象引用object.Instantiate中的实例化


每个客户端都需要在其场景中使用JetpackManager才能调用此函数。有错误吗?或者你收到的日志?