当前位置:   article > 正文

【Unity DOTS1.0】学习之路---基础课1-3笔记_unity dots scheduleparallel

unity dots scheduleparallel

Unity Jobs System: 包括C# Jobs System和C++ Jobs System,可以结合ECS,也可以单独使用。
Race Condition:竞争条件。
由于两个或者多个进程竞争使用不能被同时访问的资源,使得这些进程有可能因为时间上推进的先后原因而出现问题,这叫做竞争条件(Race Condition)。

竞争条件分为两类:
-Mutex(互斥):两个或多个进程彼此之间没有内在的制约关系,但是由于要抢占使用某个临界资源(不能被多个进程同时使用的资源,如打印机,变量)而产生制约关系。
-Synchronization(同步):两个或多个进程彼此之间存在内在的制约关系(前一个进程执行完,其他的进程才能执行),如严格轮转法。

参考文章:https://blog.csdn.net/u012562273/article/details/56486776

blittable types:在C#中有一些类型在托管与非托管代码之间可以直接使用,不需要进行任何转换,这些类型就称之为 blittable types
,也就是可以在需要手动释放内存的代码里切换不需要任何转换?
在这里插入图片描述

Job只能使用blittable types类型的数据和非托管内存堆上的数据,transform不满足该条件,但Vector3满足。
Job调度分为三种:Run, Schedule,ScheduleParallel这三种。

  1. run– 主线程立即顺序执行
  2. Schedule—单个工作线程或者主线程执行,每个Job顺序执行
  3. ScheduleParallel—在多个工作线程上同时执行,性能最好。但需要关注Race Condition

==============================================================================================
Unity下创建Entities有两种模式:
1.Authoring—编辑器(编排)模式下创建
1.1.SubSence: 游戏烘焙子场景,可以在编辑模式下完成对GameObject到Entities的转换(save and close),大大提高运行时的效率(个人见解)

参考视频链接:什么是Unity的子场景(Subscene)?

1.2.IComponentData:IComponentData的实现必须是一个结构体,并且仅能包含非托管、可位传输的数据类型,个人认为是实现ECS中的Component数据,但也有他自己的限制,不可以使用托管类型的数据。

参考视频链接: IComponentData中可用的各种列表

1.3.Baker:自我理解将ECS中的E和C联系起来?其中C是指自定义的ComponentData。这个转换过程称为Baking,自定义协助处理这个过程的对象就叫做Baker

在这里插入图片描述
补充:在这里插入图片描述
2.Runtime—运行模式下创建
猪脑过载了…截取视频的图片,自己慢慢理解看吧~
在这里插入图片描述在这里插入图片描述

声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号