unity要学ecs吗_UnityECS学习日记一UnityECS与传统开发方式的区别

本文探讨UnityECS与传统开发方式的区别,讲解如何利用ECS提高游戏性能,包括多级缓存技术和SIMD并行计算。Unity官方的DOTS技术栈包含ECS、Jobs System和Burst。ECS适用于大型场景和高数量级物体,而Jobs System提供多核开发支持。Burst是一个编译器,用于生成优化的本机代码。文章还介绍了不同ECS框架的优缺点及学习资源。

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

UnityECS学习日记一UnityECS与传统开发方式的区别

UnityECS学习日记一:UnityECS与传统开发方式的区别

目前程序开发分为:面向过程开发(c 语言 ),面向对象开发( unity传统开发方式 ),面向数据开发(ECS)大致这三种。Unity官方2018开始,推出了DOTS(多线程式数据导向型技术栈),其中分别用到的技术:ECS 、Jobs System、Burst 。

首先要明白UnityECS开发方式和传统开发方式区别是如何提高游戏性能的:

为啥数据连续排列就能提高性能?

1.利用PCU的多级缓存技术,提高访问速度。

特别是空间局部性:如果某个数据被访问,那么与它相邻的数据很快也能被访问。

2.利用CPU的SIMD(单指令流多数据流技术)

说白就是利用CPU多核并发技术进行并行计算( 也就是多线程开发,传统开发Upate等都是单线程的,像物体移动,彼此每个物体之间不需要数据依赖可以通过并行计算提高速度。尤其适用于移动端)

unity ECS系统 ,发现网上有官方框架和非官方框架的学习路线:

第一种是Entitas(由OYM在Github开源项目):

优点:通用的体系,可以将这套体系快速重构代码,不仅适用于Unity,也可以对服务器使用这套框架,

缺点:性能永远是Unity的ECS系统的50%,学习曲线非常陡峭。

github地址:https://github.com/OneYoungMean/Entitas-CSharp-OYM/wiki

第二种是UnityECS (Unity官方提供的框架):

优缺点从第一种比较可以看出。官方提供的ECS框架,其中迭代了几十个版本API删除和增加,官方提供的案例有的也不能正常运行,这会造成有很高的学习成本。

ECS主要适用于大型场景、数量级的游戏物体的场景,比如 僵尸世界大战的尸潮 等。当然,你的游戏项目并不是这种类别,使用ECS框架也是能提高你的游戏性能。ECS框架可以想象类似MVC框架一样,让你以对应格式去写代码,并了解面向数据的开发方式。

文档:https://docs.unity3d.com/Packages/[email protected]/manual/index.html

官方仓库:https://github.com/Unity-Technologies/EntityComponentSystemSamples

注意:UnityECS官方迭代速度太快有些API已经不适用,官方文档会报错,据说2020年Unity会推出ECS的一个大版本。

unity官方早就推出了也适用于传统开发方式,目前Jobs System和ECS强强联合更能够提高游戏的性能!Jobs System是多核开发技术,untiy自己提供了job概念,不需要你自己去处理线程池切换等,只需要向job中添加处理逻辑。

详情可以参考:https://images1.tqwba.com/20200627/amecigwjpoo

Burst是一个编译器,它使用LLVM将IL / .NET字节码转换为高度优化的本机代码。

程序可以不用关注这个,想要了解可以参考:https://blog.csdn.net/alph258/article/details/83997917

本篇参考文章:

Unity DOD (ECS) 基础概念与资料汇总:https://indienova.com/indie-game-development/unity-dod-all-in-one/

远程项目仓库(github):https://github.com/h1031464180/UnityECS

UnityECS学习日记一UnityECS与传统开发方式的区别相关教程

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值