当前位置: 首页 > news >正文

毕节做网站棋牌网站代理

毕节做网站,棋牌网站代理,怎么看网站有没有被收录,网站收录提交入口网址最近DOTS发布了正式的版本, 我们来分享一下DOTS里面Struct Change机制,方便大家上手学习掌握Unity DOTS开发。 基于ArchType与Chunk的Entity管理机制 我们回顾以下ECS的内存管理核心机制,基于ArchTypeChunk的Entity管理模式。每个Entity不直接存放数据&#xff0c…

最近DOTS发布了正式的版本, 我们来分享一下DOTS里面Struct Change机制,方便大家上手学习掌握Unity DOTS开发。

基于ArchType与Chunk的Entity管理机制

我们回顾以下ECS的内存管理核心机制,基于ArchType+Chunk的Entity管理模式。每个Entity不直接存放数据,数据全部存放到ComponentData里面。每个类型的Entity,会把它所有的ComponentData的组合在一起。每种类型的Entity都会得到”一种组合类型”,我们把它叫做ArchType。每种类型的Enitity对应一种ArchType。如果有新的类型的Entity出来,系统就会有新的一种ArchType。ArchType对应的内存块都是由Chunk统一分配,每个Chunk只会分配一种ArchType的内存块。

对惹,这里有一个游戏开发交流小组,大家可以点击进来一起交流一下开发经验呀!

===============================
ArchType1:
chunk1【e1(c1c2),e2(c1c2),e3(c1c2)】
chunk2【e4(c1c2),e5(c1c2),e6(c1c2)】
...
======================
ArchType2:
chunk1【e1(c3c4),e2(c3c4),e3(c3c4)】
chunk2【e4(c3c4),e5(c3c4),e6(c3c4)】
...
===============================
ArchType3: 
chunk1【e1(c5c6),e2(c5c6),e3(c5c6)】
chunk2【e3(c5c6),e4(c5c6),e5(c5c6)】
...
===============================

Struct Change机制

当我们操作entity中的ComponentData的时候,有可能导致Struct Change,及原来的ArchType以已经不适合新的Entity了,必须要产生新的ArchType来存放数据,这种我们叫做Struct Change。以下操作会导致Struct Change发生:

  1. 创建or删除一个Entity: Unity会从当前Entity类型的ArchType里面找到一个chunk, 把第一个空闲的内存块分配分配出来。如果当前的chunk都满了,就重新向操作系统分配一个chunk内存页出来。当删除一个entity的时候,先找到内存块所在的chunk,找到内存块在chunk中的偏移位置,把最后一个entity的component数据复制到刚才释放的内存块中,把最后的那个内存块释放出来,供一下分配。
  2. 添加或删除一个组件数据: 当我们给entity添加or删除一个组件数据的时候,意味着前后是不同的ArchType(因为改变了组合类型)。所以要先释放原来ArchType对应的内存块,然后在新的ArchType里面再找Chunk来分配出Entity的新的ComponentData内存块。
  3. 修改了同一类型Entity共用的ShareComponent数据: 每种ArchType共用一个ShareComponent数据,如果修改了ShareComponent数据,那么意味着要创建一个新的ShareComponent数据。那么代表着当前的Entity已经不再属于当前的ArchType了,既然这样,系统就要重新基于新的ArchType来给Entity重新分配内存块,回收之前的内存块。

Struct Change的代价与开销

Struct Change引发的开销是非常大的,所以当我们基于DOTS来开发的时候,你要能清楚的知道Struct Change的开销。Struct Change开销,除了要重新从chunk里面分配内存块,复制数据以外,还有同步点的开销,同步点你可以理解为一个锁,当发生了Strcut Change的时候,为了保证正确性,系统会生成一个同步点,这样其它的要使用这个数据的线程都会被挂起,直到Struct Change操作完成。

Struct Change还会导致之前系统里面的组件引用失效,所以当发生Struct Change的时候,还要重新更新引用数据,保证后面数据的正确。从上面来看Struct Change开销确实很大,特别是每次修改还要获取同步点,同步点会导致系统的吞吐量下降,我们可以考虑把所有的Struct Change延后一起发生,这样可以只请求一个同步点的基础上把所有的Struct Change全部处理掉。

http://www.yayakq.cn/news/635686/

相关文章:

  • 做网站的技术难点百度网站建设
  • 做灯具外贸哪个网站好做网站开发技术说明
  • 网站制作需要多少费用房山网站制作
  • 域名注册网站制作专业单位网站设计企业
  • 厦门本地网站怎么制作香囊 教程
  • 做配件出口上什么网站wordpress做的网站
  • 东营有哪些制作网站网站建设还流行吗
  • 专业建设网站技术展厅设计案例100例
  • 电子商务网站开发报告网站规划与建设ppt模板下载
  • 上海网站seo快速排名建设网站的工作总结
  • 唐山市城乡建设局网站wordpress4.7安装步骤
  • 手机触屏网站模板西地那非片功效与作用主要会有哪些
  • 怎么增加网站的流量南城网站建设公司方案
  • 商务网站建设教学视频教程编程培训机构排名前十
  • 吕梁seo网站建设企业网站建设方案书
  • 网站的百度快照如何做用wordpress做企业网站视频教程
  • 苏州网站建设公司找哪家东莞网站优化电话
  • 陕西省房和城乡建设厅网站西安网站制作机构
  • 什么网站可以做ui兼职晚上睡不着正能量网站
  • 济南建站公司网站网站建设费的账务处理
  • 电影网站网页设计实训报告用ps做零食网站模板
  • 哪里建设网站最好用php网站怎么搭建环境配置
  • 网站开发 脚本怎么写wordpress 分类列表插件
  • 短网址生成 免费网站优化制作
  • 关于字体设计的网站重庆市工信部网站
  • 网站备案号收回Wordpress搜索结果页插件
  • 建手机网站一年费用盐城网站优化方案
  • 陕西省建设银行网站搭建影视网站
  • 四川品牌网站建设小程序制作模板免费
  • 网站建设活动策划方案wordpress设置密码访问带提示