Momentan arbeite ich an einem vernetzten 2d Platformer Spiel. Ich habe ein Skript, das den JetpackManager des Jetpacks des Spielers instanziieren soll. Wenn der Spieler jedoch in die Szene hineingespawnt wird, erzeugt der Code nur ein Jetpack in der Host-Szene und nicht in den Szenen der Kunden. Dies führt dazu, dass nur die Host-Szene ordnungsgemäß funktioniert, während alle Spieler in den Szenen der Kunden keine Jetpacks haben. Dies ist mein Code für die JetpackManager:ClientRpc Funktion wird nicht auf allen Clients in Unity3d ausgeführt. C#
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);
}
}
So im Wesentlichen mein Problem ist, dass der Code innerhalb der RpcEquipJetpack
Funktion aus irgendeinem Grund ist nur auf dem Host und nicht auf einem der Clients aufgerufen werden.
Jeder Client muss JetpackManager in seiner Szene haben, um diese Funktion aufrufen zu können. – Fiffe
irgendein Fehler? oder protokollieren Sie erhalten? –