• 讨论
  • ET8.1的消息转发如何拓展?

求教下各位大佬 ILocationRequest 如何在Gate 上自动转发呢

  • 风的方向 进一步的,你可以注意到,Location 现在有两个 Key 一个 Type 一个 Id。

    那么如果你自定义的 Unit 跟 Map 中 的 Unit 不在一个 Root下,它们的Id 可以是一致的 都可以等于 PlyaerId。

    这样的话 只要你的 ILocationRequest 带上不同的 LocationType,它对应不同的 Unit, 就可以在 _Gate 这边实现分发到不同的 Unit。

看这个 NetComponentOnReadInvoker_Gate

它会根据 PlayerId 去获取 Location。通过两个key:LocationType 和 PlayerId。

那么Location是 什么时候注册的呢? 你可以通过 LocationType.Unit 去搜索它的使用就可以找到。

注意一个 LocationEntity 注册的时候出了需要 AddLocation 还要在这个 Entity挂上 MailBoxComponent。

    风的方向 字母鸽在教程中的做法是定义新的消息接口:IUnitCustomRequest : ILocationRequest。

    然后再 _Gate 这个脚本中,添加新的 case IUnitCustomRequest:。

    根据这个接口对应的Id 根据 location 找到自定义的unit。

    ILocationRequest 使用了 Player.Id。你自定义的Unit 可以是另一个ID存到 session 身上的组件中。

    风的方向 进一步的,你可以注意到,Location 现在有两个 Key 一个 Type 一个 Id。

    那么如果你自定义的 Unit 跟 Map 中 的 Unit 不在一个 Root下,它们的Id 可以是一致的 都可以等于 PlyaerId。

    这样的话 只要你的 ILocationRequest 带上不同的 LocationType,它对应不同的 Unit, 就可以在 _Gate 这边实现分发到不同的 Unit。

    说点什么吧...