如果该对象代表本地机器上的玩家,则返回 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
}
}