[Unity ECS] Entity交互方式选择 ComponentDataFromEntity vs Entity Command Buffer(ECB)

实体互动的选择Options for Entity interaction - Unite Copenhagen 2019

必看的一个视频呀!

 

https://www.youtube.com/watch?v=KuGRkC6wzMY

https://www.slideshare.net/unity3d/options-for-entity-interaction-unite-copenhagen-2019

 

           交互是游戏的基础,包括玩家与游戏的交互方式和接收响应,以及游戏各部分之间的交互方式。Unity的Entities包为 编写系统提供了多种选择,在这些系统中,实体之间可以相互交流信息。本讲座介绍了这些选项,并说明了每种方法的利弊。观看它以获得使用Unity的实体组件系统(ECS)时选择代码策略的提示!主讲人:月神迈耶

        两个情景: 跟随, 按钮点击的事件处理:

[Unity ECS] Entity交互方式选择 ComponentDataFromEntity vs Entity Command Buffer(ECB)_第1张图片

 

 

         一种解决方法: 

[Unity ECS] Entity交互方式选择 ComponentDataFromEntity vs Entity Command Buffer(ECB)_第2张图片

 

        这样的代码肯定会导致将来的混乱。 

 

 

分析关系 Relationships:

       数据A 依赖数据B(前者的值依赖于后者)

就像追随示例,       追随者的速度依赖于 leader的相对位置。 

[Unity ECS] Entity交互方式选择 ComponentDataFromEntity vs Entity Command Buffer(ECB)_第3张图片

 

        按钮示例也是一样的,门的状态取决于 按钮。 

[Unity ECS] Entity交互方式选择 ComponentDataFromEntity vs Entity Command Buffer(ECB)_第4张图片

 

         下面两种情况的关系:

[Unity ECS] Entity交互方式选择 ComponentDataFromEntity vs Entity Command Buffer(ECB)_第5张图片

 

            也就是今天的主题其实不应该是 Options for Entity interaction, 而是 Options for Data Relationships 

 

实现我们数据关系的步骤:

  1. 理解数据的转换(输入,输出)
  2. 转换的成本,频率, 应用他
  3. 选择合适的工具

[Unity ECS] Entity交互方式选择 ComponentDataFromEntity vs Entity Command Buffer(ECB)_第6张图片

 

Practice makes  Perfect 实践使完美

        识别数据:

[Unity ECS] Entity交互方式选择 ComponentDataFromEntity vs Entity Command Buffer(ECB)_第7张图片

 

         识别域

[Unity ECS] Entity交互方式选择 ComponentDataFromEntity vs Entity Command Buffer(ECB)_第8张图片

 

         确定频率

[Unity ECS] Entity交互方式选择 ComponentDataFromEntity vs Entity Command Buffer(ECB)_第9张图片

[Unity ECS] Entity交互方式选择 ComponentDataFromEntity vs Entity Command Buffer(ECB)_第10张图片

 

 

           时间复杂度,空间复杂度。  (这个代码的成本相对较低)

[Unity ECS] Entity交互方式选择 ComponentDataFromEntity vs Entity Command Buffer(ECB)_第11张图片

 

     Recap概括一下。

[Unity ECS] Entity交互方式选择 ComponentDataFromEntity vs Entity Command Buffer(ECB)_第12张图片

 

           第一个通信的工具:   ComponentDataFromEntity 

[Unity ECS] Entity交互方式选择 ComponentDataFromEntity vs Entity Command Buffer(ECB)_第13张图片

 

 

         评价:

[Unity ECS] Entity交互方式选择 ComponentDataFromEntity vs Entity Command Buffer(ECB)_第14张图片

 

[Unity ECS] Entity交互方式选择 ComponentDataFromEntity vs Entity Command Buffer(ECB)_第15张图片

 

 

A word of caution - Writing  

谨慎一点 - Writing  操作 (安全性的考虑),  下面这种写法 可能会抛出异常。

   [Unity ECS] Entity交互方式选择 ComponentDataFromEntity vs Entity Command Buffer(ECB)_第16张图片

             当然了这种安全性检测,你可以屏蔽掉, 使用   属性。 那么安全问题就是你自己负责。 

 

Write Relationships

 

[Unity ECS] Entity交互方式选择 ComponentDataFromEntity vs Entity Command Buffer(ECB)_第17张图片

 

Entity Command Buffer (ECB)

[Unity ECS] Entity交互方式选择 ComponentDataFromEntity vs Entity Command Buffer(ECB)_第18张图片

[Unity ECS] Entity交互方式选择 ComponentDataFromEntity vs Entity Command Buffer(ECB)_第19张图片

 

[Unity ECS] Entity交互方式选择 ComponentDataFromEntity vs Entity Command Buffer(ECB)_第20张图片

 

[Unity ECS] Entity交互方式选择 ComponentDataFromEntity vs Entity Command Buffer(ECB)_第21张图片

[Unity ECS] Entity交互方式选择 ComponentDataFromEntity vs Entity Command Buffer(ECB)_第22张图片

 

 

 

Read Relationships  VS  Write Relationships 

读, 高频时可以使用,   

写,低频时使用可以使用。

[Unity ECS] Entity交互方式选择 ComponentDataFromEntity vs Entity Command Buffer(ECB)_第23张图片

 

总结

什么是关系

[Unity ECS] Entity交互方式选择 ComponentDataFromEntity vs Entity Command Buffer(ECB)_第24张图片

[Unity ECS] Entity交互方式选择 ComponentDataFromEntity vs Entity Command Buffer(ECB)_第25张图片

 

 

           就是下面两个工具处理 交互。 对读友好(高频),对写友好(低频)

[Unity ECS] Entity交互方式选择 ComponentDataFromEntity vs Entity Command Buffer(ECB)_第26张图片

 

 

评论:

Lupod2周前(修改过)

对我来说,到目前为止Unite 2019上最重要,最有见地的演讲,谢谢!

特雷弗·麦克唐纳2周前

这是一个很棒而有用的谈话!这专门解决了我的问题和想法

Ciro Continisio2周前

好说!很高兴获得有关如何选择代码策略的思考技巧。。我真的很感激。谢谢。

 

             注意官方给的不对, ppt 是讲关于  FPS示例项目的  

 

 

你可能感兴趣的:(学unity涨知识)