networkBehaviour的几种状态

参考文章:

Unity5.1 新的网络引擎UNET(十五) Networking 引用--上



UNET中常用到networkBehaviour的状态判断,项目中使用率最高时isLocalPlayer/isServer/isClient,不过初学时很容易误解意思,特此来理清一下。


Property: Function:
isLocalPlayer True if this object is the player object for the local client.
当这个玩家物体属于本地客户端的物体时为true。
isServer True if this object is running on the server, and has been spawned.
当这个物体是被服务器NetworkServer.Spawn()产生出来的,并且本机端是服务器端(也包括主机端),则为true。startHost/startClient默认调用spawn()。
isClient True if this object is running on a client.
当这个物体运行,并且本机端是客户端(也包括主机端),则为true。
hasAuthority This returns true if this object is the authoritative version of the object in the distributed network application.So either on the server, or on the client with localPlayerAuthority.
当这个物体在分布式网络应用中是权威版本,则为true(不清楚)。发现基本与isServer状态同步。所以无论服务器或客户端都有本地玩家授权localPlayerAuthority。
assetId This is the assetId of the object’s NetworkIdentity.
这是物体资源id,多个玩家使用同一个资源时这个属性会一样。
netId This is the netId of the object’s NetworkIdentity.
这是物体网络id,针对每个玩家发送不同数据时会用到。
playerControllerId This is the playerControllerId of the object’s NetworkIdentity.
这是物体的玩家控制id,暂不清楚作用。
connectionToServer NetworkConnection object to use to send to the server.
用来发送给服务器的NetworkConnection 对象,暂不清楚作用。
connectionToClient

NetworkConnection object to use to send to the client.

用来发送给客户端的NetworkConnection 对象,暂不清楚作用。



打开编辑器和一个导出的exe程序同时运行,演示结果如下(一行一个例子)

 
属于编辑器端物体
外部程序物体
编辑器host,外部client
编辑器client,外部host
编辑器server,外部client
编辑器client,外部server




UnityMirror是一个高效的网络框架,它提供了一些网络行为类(NetworkBehaviour),这些行为类可以用来在网络场景中同步对象的属性值、方法调用等操作。下面是NetworkBehaviour生命周期函数: 1. Awake(): 当行为类被创建时调用,可以用来进行初始化操作。 2. OnStartServer(): 当行为类被添加到服务器上时调用,可以用来注册网络消息的处理函数等操作。 3. OnStartClient(): 当行为类被添加到客户端上时调用,可以用来注册网络消息的处理函数等操作。 4. OnStartLocalPlayer(): 当本地玩家对象(LocalPlayer)被创建时调用,只有该对象上的NetworkBehaviour会收到该消息。 5. OnStopLocalPlayer(): 当本地玩家对象(LocalPlayer)被销毁时调用,只有该对象上的NetworkBehaviour会收到该消息。 6. OnStopClient(): 当行为类从客户端上移除时调用,可以用来清理网络消息的处理函数等操作。 7. OnStopServer(): 当行为类从服务器上移除时调用,可以用来清理网络消息的处理函数等操作。 8. OnDestroy(): 当行为类被销毁时调用,可以用来进行清理操作。 9. OnSerialize(): 当需要同步对象的属性值时调用,可以将对象的属性值序列化成网络消息发送给其他客户端或服务器。 10. OnDeserialize(): 当接收到其他客户端或服务器发送的网络消息时调用,可以将消息中的属性值反序列化到本地对象上。 以上就是UnityMirror NetworkBehaviour生命周期函数的介绍。需要注意的是,这些函数都是在网络线程上执行的,因此要避免在这些函数中进行耗时操作,以免影响网络性能。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

haobaworenle

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值