Version: 5.3 (switch to 5.4b)
IdiomaEnglish
  • C#
  • JS

Idioma de script

Selecciona tu lenguaje de programación favorito. Todos los fragmentos de código serán mostrados en este lenguaje.

CommandAttribute

class in UnityEngine.Networking

Sugiere un cambio

¡Éxito!

Gracias por ayudarnos a mejorar la calidad de la documentación de Unity. A pesar de que no podemos aceptar todas las sugerencias, leemos cada cambio propuesto por nuestros usuarios y actualizaremos los que sean aplicables.

Cerrar

No se puedo enviar

Por alguna razón su cambio sugerido no pudo ser enviado. Por favor <a>intente nuevamente</a> en unos minutos. Gracias por tomarse un tiempo para ayudarnos a mejorar la calidad de la documentación de Unity.

Cerrar

Cancelar

Cambiar al Manual

Descripción

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); } } }

Variables

channelCanal QoS usado en el envío de este comando. Ver QosType.