作为基类使用,应该由包含网络功能的脚本继承。
添加此脚本的物体,应有NetworkIdentity脚本组件。
属性
public bool localPlayerAuthority { get; }
摘要:此值是在NetworkIdentity上设置的,可在此处访问以方便脚本访问。
即为物体添加NetworkIdentity脚本组件后,即可看到此属性。表示此物体是否可以应用到每个客户端。
public bool isServer { get; }
摘要:如果此对象在活动服务器上处于活动状态,则返回true。
public bool isClient { get; }
摘要: 如果作为客户端运行并且此对象是由服务器生成的,则返回true。
public bool isLocalPlayer { get; }
摘要: 如果此对象是表示本地计算机上播放机的对象,则返回true。
public bool hasAuthority { get; }
摘要: 客户端授权针对是某个客户端,在这个客户端上的这个网络物体的hasAuthority为true。指定授权给客户端会导致这个物体中的NetworkBehaviours类中的OnStartAuthority()函数被调用,同时属性hasAuthority将被设置为true。在其他的客户端上,hasAuthority属性将保持为false。拥有客户端授权的非玩家物体可以发送命令,像玩家对象一样。这些命令将被执行在服务器上,而不是在关联的玩家客户端上。
public NetworkConnection connectionToServer { get; }
摘要: 与NetworkIdentity关联的NetworkConnection,这仅对服务器上的物体对象有效。
public NetworkInstanceId netId { get; }
摘要: 此对象的唯一网络Id。
public NetworkConnection connectionToClient { get; }
摘要: 与NetworkIdentity关联的NetworkConnection,这仅对服务器上的物体对象有效。
public short playerControllerId { get; }
摘要: 与行为相关联的玩家的id。
protected bool syncVarHookGuard { get; set; }
protected uint syncVarDirtyBits { get; }
方法
protected static void RegisterCommandDelegate(Type invokeClass, int cmdHash, CmdDelegate func);
protected static void RegisterEventDelegate(Type invokeClass, int cmdHash, CmdDelegate func);
protected static void RegisterRpcDelegate(Type invokeClass, int cmdHash, CmdDelegate func);
protected static void RegisterSyncListDelegate(Type invokeClass, int cmdHash, CmdDelegate func);
public void ClearAllDirtyBits();
摘要: 这将清除SetDirtyBits()在此脚本上设置的所有脏位。
public virtual int GetNetworkChannel();
摘要: 此虚拟函数用于指定用于此脚本的SyncVar更新的QoS通道。
public virtual float GetNetworkSendInterval();
摘要: 此虚拟函数用于指定用于此脚本的SyncVar更新的发送间隔。更新之间的时间(秒)。
public virtual bool InvokeCommand(int cmdHash, NetworkReader reader);
摘要: 手动调用命令。
参数:
- cmdHash:命令名的哈希值。
- reader:要传递给命令的参数。
返回结果:如果成功,则返回true。
public virtual bool InvokeRPC(int cmdHash, NetworkReader reader);
摘要:手动调用RPC函数。
参数:
- cmdHash:RPC名称的哈希值。
- reader:传递给RPC函数的参数。
返回结果:如果成功,则返回true。
public virtual bool InvokeSyncEvent(int cmdHash, NetworkReader reader);
摘要:手动调用SyncEvent。
参数:
- cmdHash:SyncEvent名称的哈希值。
- reader:要传递给SyncEvent的参数。
返回结果:如果成功,则返回true。
public virtual bool InvokeSyncList(int cmdHash, NetworkReader reader);
public virtual bool OnCheckObserver(NetworkConnection conn);
摘要:可见性系统用于确定观察者(玩家)是否可以看到此对象的回调。
参数:
- conn:玩家的网络连接。
返回结果: 如果玩家能够看到这个物体就返回True。
public virtual void OnDeserialize(NetworkReader reader, bool initialState);
摘要:要重写以接收自定义序列化数据的虚拟函数。发送序列化数据的对应函数是OnSerialize()。
参数:
- reader:从流中读取。
- initialState:如果发送初始状态,则为True。
public virtual void OnNetworkDestroy();
摘要:当服务器已导致此对象被销毁时,将在客户端上调用此命令。
public virtual bool OnRebuildObservers(HashSet<NetworkConnection> observers, bool initialize);
public virtual bool OnSerialize(NetworkWriter writer, bool initialState);
摘要: 要重写以发送自定义序列化数据的虚拟函数。发送序列化数据的对应函数是OnDeserialize()。
参数:
- writer:用于写入流的写入程序。
- initialState:如果调用它来发送初始状态。
返回结果: 如果数据已写入,则为True。
public virtual void OnSetLocalVisibility(bool vis);
摘要:可见性系统用于主机上对象的回调。
参数:
- vis:新的可见性状态。
public virtual void OnStartAuthority();
摘要: 基于上下文和NetworkIdentity.localPlayerAuthority,这在具有权限的行为上调用。
public virtual void OnStartClient();
摘要: 在客户端上激活时对每个网络行为调用。
public virtual void OnStartLocalPlayer();
摘要: 在设置本地播放器对象时调用。
public virtual void OnStartServer();
摘要:当NetworkBehavior对象在服务器上处于活动状态时,将对其调用此命令。
public virtual void OnStopAuthority();
摘要:当authority被移除时,这种行为被调用。
public virtual void PreStartClient();
摘要:对客户端对象调用的内部方法,以解析GameObject引用。
public void SetDirtyBit(uint dirtyBit);
摘要:用于将行为设置为脏,以便为对象发送网络更新。
参数:dirtyBit:设置位掩码。
protected void SendCommandInternal(NetworkWriter writer, int channelId, string cmdName);
protected void SendEventInternal(NetworkWriter writer, int channelId, string eventName);
protected void SendRPCInternal(NetworkWriter writer, int channelId, string rpcName);
protected void SendTargetRPCInternal(NetworkConnection conn, NetworkWriter writer, int channelId, string rpcName);
protected void SetSyncVar<T>(T value, ref T fieldValue, uint dirtyBit);
protected void SetSyncVarGameObject(GameObject newGameObject, ref GameObject gameObjectField, uint dirtyBit, ref NetworkInstanceId netIdField);
UNetInvokeType
枚举:UNet调用类型
protected enum UNetInvokeType
{
Command = 0,
ClientRpc = 1,
SyncEvent = 2,
SyncList = 3
}
Invoker调用程序
public UNetInvokeType invokeType;
public Type invokeClass;
public CmdDelegate invokeFunction;
public Invoker();
public string DebugString();
public delegate void CmdDelegate(NetworkBehaviour obj, NetworkReader reader);命令函数的委托。
protected delegate void EventDelegate(List<Delegate> targets, NetworkReader reader);事件函数的委托。