Wie könnte ich OnPhotonSerializeView?
Ich bin derzeit zu instanziieren einer box, wenn der Spieler fällt es (mit "PhotonNetwork.Instanziieren"). Jetzt Sie dieses Kontrollkästchen, wenn der Spieler fällt es gegeben ist, Daten über diese box, in form eines Enum-und verteilt dann den Wert in die box. Aber, wenn der andere Kunde in die Hand nimmt, die box hat keine Werte.
Wenn der Benutzer die client-Tropfen-box:
code:
[RPC] void dropItem(Item item){
Vector3 playerPos = this.transform.position;
Vector3 playerDirection = this.transform.forward;
Quaternion playerRotation = this.transform.rotation;
float spawnDistance = 1;
Vector3 spawnPos = playerPos + playerDirection*spawnDistance;
string itemname = item.itemName;
GameObject itemAsGameObject = (GameObject)PhotonNetwork.Instantiate("DroppedItem", spawnPos, playerRotation, 0);
itemAsGameObject.GetComponent<DroppedItem> ().item = item;
}
Wie Sie sehen können die Kunde, dass die Tropfen, die box hat die Werte. aber Sie arent weitergegeben werden, über die andere clients im Netzwerk. wie kann ich dieses Problem beheben?
- Welche Eigenschaften haben Sie? Wie synchronisieren Sie Sie?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Hier ist ein Beispiel für Sie.
Möchte ich Zugriff auf x,y,z von cube.cs für die Kunden.
cube.cs ist mit einem Fertighaus, das erzeugt wird, viele Male vom server, wenn der Raum ist verbunden durch master.
auf dem prefab erstelle ich eine PhotoView und ziehen Sie dann die Würfel.cs-script (das ist auch an der gleichen prefab) zu PhotonView ist "Beobachtet Komponenten".
Wenn Sie das Objekt innerhalb der Ebene, versuchen Sie instanziieren Sie es als Szene-Objekt statt der normalen Instanziierung: PhotonNetwork.InstantiateSceneObject. Eine andere Sache ist, dass Sie brauchen nicht zu werfen die instanziierte Objekt als GameObject, weil photon sich bereits nicht, dass für Sie, es ist nicht wie normale Instanziierung.
Auch, wenn Sie nur ein Feld pro Spielzimmer, wirst du wirst sein in der Lage zu erreichen eine bessere performance, wenn Sie erstellen Sie einige Logiken, um nicht zu zerstören die box, wenn es kollidiert mit einem Spieler. Versuchen desabling es irgendwie anstatt zu zerstören und restantiate es jedes mal. Eine Idee ist, zu aktivieren enable = false von Komponenten wie: Animator, SpriteRenderer, Beschleunigern usw..
Dann, anstelle der Instanziierung es wieder, wenn ein Spieler fällt, schalten Sie nur jene Komponenten wieder, aber vergessen Sie nicht, ändern Sie das Feld, die position, die Sie bereits tun.
😉