Ich versuche, SyncVar zu verwenden, aber ich verstehe nicht ganz, was ich falsch mache, wenn ich es falsch mache, dass ist. Hier ist die Situation:UNET SyncVar auf Serverseite nicht aktualisiert
1) Ich habe zwei öffentliche SyncVar suchen: redFunds und blueFunds und zwei lokale „alte“ -Ausführung mit vergleichen
2) Ich habe die SyncVar unter Start initiieren, indem Cmd_UpdateXxx verwenden, das funktioniert
3) ich habe zwei Tasten, eine für jede SyncVar
4) aktualisiere ich die SyncVar gegen den oldXxxFunds vergleichen. Wenn ich einen Treffer habe, zeige ich in Szene
Wenn ich den Code ausführen, zeigt es die richtigen Zahlen auf der Szene auf beiden Playern (Rot & Blau), aber das ist nicht vollständig im Editor beim Betrachten der "öffentlichen" SyncVar's wider . Wenn man den roten Knopf drückt, wird im Editor nur der rote Spieler und nicht der blaue Spieler angezeigt.
Kann mir jemand erklären, was ich hier falsch mache? ... wenn ich etwas falsch mache, ist das. Sollte ich die Änderungen nicht auch im Editor sehen?
[SyncVar] public int redFunds;
[SyncVar] public int blueFunds;
public int oldRedFunds;
public int oldBlueFunds;
void Start() {
if (!isLocalPlayer)
return;
Cmd_UpdateRed (10);
Cmd_UpdateBlue (20);
}
// Button
void btn_Red() {
if (!hasAuthority)
return;
Cmd_UpdateRed (10000);
}
void btn_Blue() {
if (!hasAuthority)
return;
Cmd_UpdateBlue (20000);
}
[Command]
void Cmd_UpdateRed (int _value) {
redFunds = _value;
}
[Command]
void Cmd_UpdateBlue (int _value) {
blueFunds = _value;
}
void Update() {
if (redFunds != oldRedFunds) {
txt_RedTotalFunds = GameObject.Find ("txt_RedTotalFunds").GetComponent<Text>();
txt_RedTotalFunds.text = "$" + redFunds;
oldRedFunds = redFunds;
}
if (blueFunds != oldBlueFunds) {
txt_BlueTotalFunds = GameObject.Find ("txt_BlueTotalFunds").GetComponent<Text>();
txt_BlueTotalFunds.text = "$" + blueFunds;
oldBlueFunds = blueFunds;
}
}
Wie viele Objekte mit diesem Skript existieren und wer sind die Eigentümer? – Fenixrw
@Fenixrw es ist vier Objekte, die Spieler, in denen dieser Code liegt. – PeterK
Ich werde hier einige Tests durchführen, um zu sehen, ob ich das Problem finden kann. – Fenixrw