私はSyncVarを使用しようとしていますが、間違っていると私が間違っていることを完全に理解していません。サーバー側のUNET SyncVarは更新されていません
1)私は、2つのパブリックSyncVarの持っている:Cmd_UpdateXxxを使用することによって、私はスタートでSyncVarを開始
2)と比較するredFundsとblueFundsと2つのローカル「古い」-versionは、
の作品ここで状況があります3)各SyncVarに1つのボタンが2つあります
4)アップデートでは、SyncVarとoldXxxFundsを比較します。ヒットiが場面に表示された場合
コードを実行すると、両方のプレーヤー(赤&青)のシーンに正しい数字が表示されますが、これはエディターで完全に反映されません。「公開」SyncVar 。赤いボタンを押すと、エディターで青色ではなく赤いプレーヤーだけが反映されます。
ここで間違っていることを誰かに説明することはできますか? ...もし私が何か間違っているとすれば。私はエディタでも変更を見るべきではありませんか?
[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;
}
}
そのスクリプトを持つオブジェクトはいくつあり、所有者は誰ですか? – Fenixrw
@Fenixrwこれは4つのオブジェクトで、このコードが存在するプレイヤーです。 – PeterK
ここでいくつかのテストを行い、問題が見つかるかどうか確認します。 – Fenixrw