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.

NetworkBehaviour.isLocalPlayer

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
public var isLocalPlayer: bool;
public bool isLocalPlayer;

Descripción

Devuelve true si este objeto es el que representa al jugador en la máquina local.

En juegos multijugador, hay múltiples instancias del objeto Player. El cliente necesita saber cuál de ellas es "de él" para que solo ese jugador procese la entrada y posiblemente también tenga añadida una cámara. La función IsLocalPlayer devolverá true solo para la instancia del jugador en la máquina local, para que pueda ser usada al filtrar la entrada en jugadores no locales.

Este código de ejemplo muestra un procesamiento de entrada que afectará únicamente al jugador local.

#pragma strict
public class Player extends NetworkBehaviour {
	var moveX: int = 0;
	var moveY: int = 0;
	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("Move", moveX, moveY);
		}
	}
	@Command
	function CmdMove(dx: int, dy: int) {
		// move here
	}
}
public class Player : NetworkBehaviour {

int moveX = 0; int moveY = 0; 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("Move", moveX, moveY); } }

[Command] void CmdMove(int dx, int dy) { // move here } }