2016-09-11 6 views
2

サーバスクリプトからキューブの色を同期しようとしています。私はそれにネットワーク変換とネットワークアイデンティティのコンポーネントを持っていて、同期の作業を変換して、色を同期する必要があります。私はNetwork Materialコンポーネントのようなものが必要ですか、それ以外はどうすればいいですか?ありがとう:)(私はあなたが私が英語のため申し訳ありませんが、何を意味するかだ願っています。)Unity 5ネットワークカラー同期

答えて

1

あなたはSyncVar属性を使用して値を同期することができます。これは、クライアントとサーバー上のsyncronized変更を保持します

[SyncVar] 
Color myColor; 

。しかし、これはあなたのクラスのカラータイプのフィールドに過ぎず、レンダリングの色は実際には変更されません。

レンダリングの色をUpdateコールバックのmyColorの値に変更できますが、色が変更されていなくても更新されます。

最善のアプローチは、フックを使用して次のようになります。

[SyncVar (hook = "OnColorChanged")] 
Color myColor; 

これは、関数に色が更新されるたびに「OnColorChanged」を呼び出します。このような

何か(あなたがSpriteRendersで作業している場合)動作するはずです:

[SyncVar (hook = "OnColorChanged")] 
Color myColor; 

void OnColorChanged(Color value) 
{ 
    myColor = value; 
    GetComponent<SpriteRenderer>().color = myColor; 
} 
+0

は、あなたの答えをありがとう、私は私のクライアントとネットワークスクリプトにこのコードを追加したが、私はこのエラーを取得していますUNetWeaverエラー:スクリプトUnityEngine.Networking.ConnectClientは[SyncVar] myColorを使用しますが、NetworkBehaviourではありません。 – sudoman281

+0

Classを宣言するとき、通常はMonoBehaviourから派生しますが、SyncVarを動作させるにはNetworkBehaviourから派生する必要があります。クラス宣言を 'public Class myClass:MonoBehaviour'から' public Class myClass:NetworkBehaviour'に変更してください。 – Leo

+0

MonoBehaviourをNetworkに変更していただきありがとうございます。しかし、私の立方体は色を変えない。私のコード:http://pastebin.com/TAStVciy – sudoman281

関連する問題