Es un atributo que puede ser colocado en métodos de la clase NetworkBehaviour para permitirles que sean invocados en el servidor enviando un comando desde un cliente.
Las funciones [Command] son invocadas en el objeto de jugador asociado con una conexión. Son configuradas en respuesta al mensaje "ready", pasando el objeto de jugador a la función NetworkServer.PlayerIsReady(). Los argumentos pasados al llamado del comando son serializados a través de la red, de modo que la función del servidor se invoca con los mismos valores que en la función en el cliente. Los nombres de estas funciones deben empezar con el prefijo "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 | Canal QoS usado en el envío de este comando. Ver QosType. |