可用于在服务器上验证客户端授权对象移动情况的回调。
此回调版本适用于使用 3D 物理设置的对象。此回调函数可能会返回 false 以完全拒绝移动请求。它还可能修改按引用传递的移动参数。
以下示例在 OnStartServer 中设置回调,并断开在多次失败后将对象移动到无效位置的客户端的连接。
using UnityEngine;
using UnityEngine.Networking;
public class MyMover : NetworkManager
{
public int cheatCount = 0;
public bool ValidateMove(ref Vector3 position, ref Vector3 velocity, ref Quaternion rotation)
{
Debug.Log("pos:" + position);
if (position.y > 9)
{
position.y = 9;
cheatCount += 1;
if (cheatCount == 10)
{
Invoke("DisconnectCheater", 0.1f);
}
}
return true;
}
void DisconnectCheater()
{
GetComponent<NetworkIdentity>().connectionToClient.Disconnect();
}
public override void OnStartServer()
{
GetComponent<NetworkTransform>().clientMoveCallback3D = ValidateMove;
}
}
这种服务器端移动验证应与客户端移动验证配合使用。如果客户端通过作弊绕过客户端移动检查,则回调应只检测故障。