Unity DOTS技术(十二) SystemBase修饰及操作

文章目录


一.变量修饰容器

在上节中我们讲到多线程操作,为避免对线程的操作导致数据错乱,我们需要为变量进行修饰.于是我们需要用到Native Container.

1.Native Container包含了

1.NativeArray : 类似于数组

2.NativeHashmap : 类似于字典

3.NativeMultiHashMap : 类似于哈希表

4.NativeQueue : 类似队列

二 . Native Container 分配器

用说决定容器存在的帧数,有利于性能的优化.

1.Temp : 生命周期最短 速度最快 适合在一帧内使用

2.JobTemp : 生命周期和速度 中等 适合在四帧内使用

3.Persistent : 生命周期最长 速度慢 适合长久使用

三.NativeArray的创建及释放

1.在多线程中我们不能直接使用Int等类型,需要使用Native Container的内容,如上图我们使用了Native Container下的NativeArray的内容

2.使用后必须对变量进行卸载,timeInt的类型是TempJob周期为4帧,我们可以使用WithDeallocateOnJobCompletion自动的在线程运行后进行卸载

四.线程阻塞释放容器

关于释放我们还可以使用CompleteDependency来阻塞线程

五.只读容器

使用WithReadOnly可以修饰变量为只读

六,安全检查开关

当你在确保线程安全的情况下,可手动调用关闭线程安全检查,限制减少后性能会更高.

七.实体操作

下面介绍在SystemBase中的ForEach遍历实体进行操控.对实体操作只能在主线程进行

1.在Foreach中我们需要传入实体Entity

2.通过EntityManager对实体进行操作

3.实体只能在主线程操作于是我们需要添加WithoutBurst()以及Run();

4.需要添加WithStructuralChanges才能正常行动

八.更优的实体操作方式

推荐使用以下例子效率更高

1.定义EntityCommandBuffer

2.调用Playback执行

3.Dispose清理

相关推荐
小盖子4 个月前
Unity DOTS技术(七)共享组件
unity dots·unitydots·dots技术·dots共享组件·共享组件