簡単なデモを作成したい。平面の真ん中に、クリックすると色が変わる立方体が欲しいです。(これは簡単に実装できました) キューブを交互にクリックする 2 人のプレイヤーが必要です。自分の番になるとキューブの色が変わります。キューブの色が変わると、両方のプレイヤーの画面に変更が反映されます。私は UNET の例、http://forum.unity3d.com/threads/unet-sample-projects.331978/ を見てきましたが、それらのほとんどには、キーボードで制御するネットワーク化されたキャラクターがあり、この側面があります。私を捨てています。プレイヤーを 2 つ作成する必要がありますが、非表示にして制御スクリプトを持たないようにするだけですか? ブロックをプレハブにする必要がありますか? 私のブロックのスクリプトは次のとおりです。
void Update()
{
if (Input.GetKeyDown(KeyCode.Space))
{
// Command function is called from the client, but invoked on the server
CmdChangeColor();
}
}
[Command]
void CmdChangeColor()
{
if (cubeColor == Color.green) cubeColor = Color.magenta;
else if (cubeColor == Color.magenta) cubeColor = Color.blue;
else if (cubeColor == Color.blue) cubeColor = Color.yellow;
else if (cubeColor == Color.yellow) cubeColor = Color.red;
else cubeColor = Color.green;
GetComponent<Renderer>().material.color = cubeColor;
}
また、私のブロックは現在プレハブではないことに注意してください。Network Identity コンポーネントと、ネットワーク トランスフォーム -> Sync トランスフォームを有効にしました。サーバー ホストを起動すると、ブロックの色を変更できますが、クライアントはこれらの変更を表示できません。クライアントがブロックをクリックしても、次のエラー メッセージ以外は何も起こりません:権限のないオブジェクトにコマンドを送信しようとしています。
どんな助けでも大歓迎です!ありがとう http://docs.unity3d.com/Manual/UNetSetup.html