转换你的游戏到DOTS(一)

本文介绍了如何将Unity游戏从传统模式迁移到DOTS(Data Oriented Tech Stack),包括Job System、Entity Component System (ECS) 和 Burst Compiler。DOTS能提高性能,尤其在处理大量数据时,如密集的子弹发射。ECS通过组件归类提高内存管理效率,Job System实现任务并行,Burst Compiler提升Job代码性能。文章通过AngryBots_ECS工程实例演示了DOTS的集成过程,包括Prefab转Entity、组件分离、多线程任务处理等步骤,展示了DOTS带来的显著性能提升。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

本文转自Unity Connect博主 雨松MOMO

Unite2019哥本哈根学习笔记之Converting your game to DOTS

将传统开发的游戏模式转成DOTS的方式,DOTS全称(Data Oriented Tech Stack) 面向数据的技术堆栈

image

DOTS能干什么?大家看看下面发射这么密集的子弹,如果是传统GameObject的方式肯定会卡死,然而Dots却非常流畅。 可以在Github上下载这个学习工程 https://github.com/UnityTechnologies/AngryBots_ECS

image

DOTS是什么?

  1. Job System :任务系统

  2. Entity Component System(ECS) :实体组件系统

  3. Burst Compiler :Burst编译器 ,也是LLVM编译器

  4. Project Tiny :Unity基于以上3个构成的H5小游戏解决方案

image

需要注意的是以上任务系统、实体组件系统、Burst编译器各自都是独立的系统可以单独使用,它们的集合称之为DOTS.

image

为什么要在项目中使用DOTS?

image

传统面向对象模式下内存就像下图一样,杂乱无序的排放在内存中。当CPU需要读取某个数据时,就要先从这一堆杂乱无序的内中找到需要的内存,然后将它读取并且移动到L1缓存中。缓存的内存大小是固定的远比内存要小很多,拿进来一个内存到缓存中必然就要移除一个。游戏进行中需要读取的内存多了,如果大量的都无法从缓存中拿到,就要重走内存读取在放入L1缓存的流程,势必效率就很差。称之为Cache miss。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值