Actuellement, je travaille sur un jeu de plateforme 2d en réseau. J'ai un script qui est supposé instancier le jetpack des joueurs appelé JetpackManager. Cependant, lorsque le joueur est créé dans la scène, le code ne fait apparaître qu'un jetpack dans la scène des hôtes et non dans les scènes des clients. Il en résulte que seule la scène des hôtes fonctionne correctement alors que tous les joueurs dans les scènes des clients n'ont pas de jetpacks. Ceci est mon code pour le JetpackManager:ClientRpc Fonction non exécutée sur tous les clients dans Unity3d 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);
}
}
Donc, essentiellement, mon problème est que le code dans la fonction RpcEquipJetpack
est pour quelque raison que d'être appelé sur l'hôte et non sur l'un des clients.
Chaque client doit avoir JetpackManager dans sa scène pour appeler cette fonction. – Fiffe
une erreur? ou connectez-vous reçu? –