如果该对象代表本地机器上的玩家,则返回 true。
在多人游戏中,有多个玩家对象实例。客户端需要知道哪一个适合"它自己",以确保只有该玩家可以处理输入,并且可能有一个附加的摄像机。IsLocalPlayer 函数仅在玩家实例属于本地机器上的玩家时,才返回 true,因此它可以用来过滤掉非本地玩家的输入。
此示例仅显示本地玩家的输入处理。
using UnityEngine; using UnityEngine.Networking;
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(moveX, moveY); } }
[Command] void CmdMove(int dx, int dy) { // move here } }