[Unity Mirror] Player Game Objects

81 篇文章 30 订阅

英文原文:

https://mirror-networking.gitbook.io/docs/guides/gameobjects/player-gameobjects

  Mirror 处理玩家游戏对象与非玩家游戏对象的方式不同。当新玩家加入游戏时(当新客户端连接到服务器时),该玩家的游戏对象成为该玩家客户端上的“本地玩家”游戏对象,Unity 将玩家的连接与玩家的游戏对象相关联。 Unity 为每个玩游戏的人关联一个玩家游戏对象,并将网络命令路由到该单独的游戏对象。玩家不能在其他玩家的游戏对象上调用命令,只能调用他们自己的。

  NetworkBehaviour 类(用于创建网络脚本的派生类)有一个名为 isLocalPlayer 的属性。在每个客户端的玩家游戏对象上,Mirror 在 NetworkBehaviour 脚本上将该属性设置为 true,并调用 OnStartLocalPlayer() 回调。这意味着每个客户端都有一个像这样设置的不同游戏对象,因为在每个客户端上,一个不同的游戏对象代表本地玩家。下图显示了两个客户端及其本地玩家。

  只有“您的”玩家游戏对象(从您作为玩家的角度来看)设置了 isLocalPlayer 标志。通常你应该在脚本中设置这个标志来决定是否处理输入,是否让相机跟踪游戏对象,或者做任何其他客户端的事情,这些事情应该只发生在属于那个客户端的玩家身上。

  玩家游戏对象代表服务器上的玩家(即玩游戏的人),并具有从玩家客户端运行命令的能力。这些命令是安全的客户端到服务器远程过程调用。在这个服务器权威系统中,其他非玩家服务器端游戏对象不能直接从客户端游戏对象接收命令。这既是为了安全,也是为了降低构建游戏的复杂性。通过玩家游戏对象路由来自用户的所有传入命令,您可以确保这些消息来自正确的位置、正确的客户端,并且可以在中心位置进行处理。

  每次客户端连接到服务器时,网络管理器都会添加一个player。但在某些情况下,您可能希望它在输入事件发生之前不添加玩家 - 例如用户按下控制器上的“开始”按钮。要禁用自动创建player,请导航到 Network Manager 组件的 Inspector 并取消选中 Auto Create Player 复选框。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值