Unity NetworkBehaviour

作为基类使用,应该由包含网络功能的脚本继承。

添加此脚本的物体,应有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);事件函数的委托。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值