Version: 5.3 (switch to 5.4b)
言語English
  • C#
  • JS

スクリプト言語

好きな言語を選択してください。選択した言語でスクリプトコードが表示されます。

CommandAttribute

class in UnityEngine.Networking

フィードバック

ありがとうございます

この度はドキュメントの品質向上のためにご意見・ご要望をお寄せいただき、誠にありがとうございます。頂いた内容をドキュメントチームで確認し、必要に応じて修正を致します。

閉じる

送信に失敗しました

なんらかのエラーが発生したため送信が出来ませんでした。しばらく経ってから<a>もう一度送信</a>してください。ドキュメントの品質向上のために時間を割いて頂き誠にありがとうございます。

閉じる

キャンセル

マニュアルに切り替える

説明

クライアントからサーバーへ送られるコマンドによって、サーバー上にある NetworkBehaviour クラスのメソッドを呼び出すための属性です。

[Command] 機能は接続されているプレイヤー上で実行されます。プレイヤーのオブジェクトを NetworkServer.PlayerIsReady() 関数に渡すことによって発生する "ready" メッセージに応えてセットアップをします。コマンド呼び出しで使用する引数はシリアライズされ、ネットワークを介し、クライアント上にある同じ引数を持つ関数を実行します。コマンドとなるメソッドは、必ず接頭辞として "Cmd" から始まるメソッド名にしなければいけません。

#pragma strict
public class Player extends NetworkBehaviour {
	var moveX: int = 0;
	var moveY: int = 0;
	var moveSpeed: float = 0.2f;
	function Update() {
		if (!isLocalPlayer) {
			return ;
		}
		// input handling for local player only
		var oldMoveX: int = moveX;
		var oldMoveY: int = moveY;
		moveX = 0;
		moveY = 0;
		if (Input.GetKey(KeyCode.LeftArrow)) {
			moveX -= 1;
		}
		if (Input.GetKey(KeyCode.RightArrow)) {
			moveX += 1;
		}
		if (Input.GetKey(KeyCode.UpArrow)) {
			moveY += 1;
		}
		if (Input.GetKey(KeyCode.DownArrow)) {
			moveY -= 1;
		}
		if (moveX != oldMoveX || moveY != oldMoveY) {
			CmdMove(moveX, moveY);
		}
	}
	@Command
	public function CmdMove(x: int, y: int) {
		moveX = x;
		moveY = y;
		isDirty = true;
	}
	public function FixedUpdate() {
		if (NetworkServer.active) {
			transform.Translate(moveX * moveSpeed, moveY * moveSpeed, 0);
		}
	}
}
using UnityEngine;
using UnityEngine.Networking;

public class Player : NetworkBehaviour {

int moveX = 0; int moveY = 0; float moveSpeed = 0.2f; void Update () { if (!isLocalPlayer) { return; } // input handling for local player only int oldMoveX = moveX; int oldMoveY = moveY; moveX = 0; moveY = 0; if (Input.GetKey(KeyCode.LeftArrow)) { moveX -= 1; } if (Input.GetKey(KeyCode.RightArrow)) { moveX += 1; } if (Input.GetKey(KeyCode.UpArrow)) { moveY += 1; } if (Input.GetKey(KeyCode.DownArrow)) { moveY -= 1; } if (moveX != oldMoveX || moveY != oldMoveY) { CmdMove(moveX, moveY); } } [Command] public void CmdMove(int x, int y) { moveX = x; moveY = y; isDirty = true; } public void FixedUpdate() { if (NetworkServer.active) { transform.Translate(moveX * moveSpeed, moveY * moveSpeed, 0); } } }

変数

channelコマンドを送信するのに使用する QoS チャンネル。詳細は QosType を参照してください。