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

虚拟主机网站建设ciliba磁力猫

虚拟主机网站建设,ciliba磁力猫,哪个网站可以做彩经专家,怎样查网站用什么程序做的文章目录 前言安装 DOTS 包C# 任务系统Mono 环境DOTS 环境运行作业NativeContainer 前言 作为 DOTS 教程,我们将创建一个旋转立方体的简单程序,并将传统的 Unity 设计转换为 DOTS 设计。 Unity 2022.3.52f1Entities 1.3.10 安装 DOTS 包 要安装 DOTS…

文章目录

    • 前言
    • 安装 DOTS 包
    • C# 任务系统
      • Mono 环境
      • DOTS 环境
      • 运行作业
      • NativeContainer

前言

作为 DOTS 教程,我们将创建一个旋转立方体的简单程序,并将传统的 Unity 设计转换为 DOTS 设计。

  • Unity 2022.3.52f1
  • Entities 1.3.10

安装 DOTS 包

要安装 DOTS 包,请按照以下步骤操作:

(1)从菜单“窗口 → 包管理器”打开包管理器。
(2)搜索“ Entities” 并安装 Entities和Entities Graphics。
(3)搜索“ Universal RP” 并安装 Universal RP,并设置Graphics/Scriptable Render Pipeline Settings。

这会添加“实体”作为依赖项,并递归添加它所依赖的关联包( Burst、Collections、Jobs、Mathematics等)。

在这里插入图片描述

C# 任务系统

“ C# 作业系统”是用于执行并行处理的功能。您只需执行作业即可充分利用 CPU 内核,而不必担心执行的顺序或时间。

其特点包括:
・代码简洁
・无GC
・安全
・快速

当“主线程”上无法执行所有处理时,将创建一个“作业”,将处理划分为多个较小的进程,并将这些进程添加(调度)到“作业队列”中。 “工作线程”从“作业队列”中取出一个“作业”并执行。
在这里插入图片描述
此时,C# 作业系统管理依赖关系,以便按适当的顺序执行作业。例如,如果 JobB 依赖于 JobA,那么您可以确保在 JobA 完成之前 JobB 不会运行。

虽然Job可以在Mono和Dots环境下运行,但是Mono下只能使用多线程的基本能力。
我们这里推荐在Dots环境下使用JobSystem

Mono 环境

仅依赖 JobSystem 的多线程能力

// 需继承 MonoBehaviour
public class MonoJobSample : MonoBehaviour {void Update() {var job = new MyJob { /* 数据传递 */ };JobHandle handle = job.Schedule();handle.Complete(); // 需手动同步}
}

DOTS 环境

Dots环境下配合Burst,才真正能够发挥JobSystem的并行能力
但是Job的写法也很重要,写法不规范依然不能充分使用Burst的能力。

  • job内联写法,Lambda写法,适合简单组件遍历
public void OnUpdate(ref SystemState state) {Entities.ForEach((ref LocalTransform trans, ref FindTarget find) => {// 自动处理多线程调度}).ScheduleParallel();
}
  • IJobEntity 标准实现,适合复杂逻辑,支持Burst编译
public partial struct HealthSystem : ISystem
{private EntityCommandBuffer.ParallelWriter _ecb;[BurstCompile]public void OnUpdate(ref SystemState state){_ecb = SystemAPI.GetSingleton<EndSimulationEntityCommandBufferSystem.Singleton>().CreateCommandBuffer(state.WorldUnmanaged).AsParallelWriter();HealthJob unitMoverJob = new HealthJob{ECB = _ecb,};unitMoverJob.ScheduleParallel();}
}[BurstCompile]
public partial struct HealthJob : IJobEntity
{public EntityCommandBuffer.ParallelWriter ECB;public void Execute([EntityIndexInQuery] int index,ref Health health,in PostTransformMatrix localTransform,Entity entity){//这里做System逻辑处理//逻辑是跑在Burst多线程中,性能提升明显}
}

运行作业

1.定义一个作业
要定义一个作业,首先准备一个继承“ IJob ”的结构。接下来,准备在字段中作业处理中要使用的变量。最后用Execute()实现 Job 的处理。

2.创建 Job
“Job”是作为继承“ IJob ” 的结构体( struct )生成的。

Job 字段可以有两种类型:
・基础类型:int、float、bool 等。
・NativeContainer:NativeArray、NativeSlice、NativeList 等。

只有“NativeContainer”数据可以在 Job 和主线程之间共享;“原始类型”可用于输入但不能用于输出。

3.指定Job的执行方式
指定Job的执行方式有三种方式:

・Run():在主线程中执行 lambda 表达式。在这种情况下,等待作业完成。
・Schedule():将 lambda 表达式安排为单个作业。
・ScheduleParallel():将 lambda 表达式安排为分成多个块的作业。

返回的值是“ JobHandle ”。这是对计划作业进行操作的句柄。

4.JobHandle 操作:
通过调用“JobHandle”方法上的 Complete() 等待 Job 完成。

NativeContainer

“ NativeContainer ” 是一个非托管容器,不同于 C# 提供的托管容器(List、Dictionary 等)。由于它不受 GC 管理,因此您需要通过调用Dispose()自行释放内存。

其特点包括:

  • 自己决定内存分配类型(分配器)
  • 使用后必须使用 Dispose() 释放内存
  • 仅限结构(不允许使用类)
  • 不能增加元素的数量

“NativeContainer”的类型有:

・NativeArray<Value>:数组
・NativeSlice<Value>:从 NativeArray 中切出一部分
・NativeList<Value>:列表
・NativeHashMap<Key, Value>:字典
・NativeMultiHashMap<Key, Value>:每个键有多个值的字典
・NativeQueue<Value>:先进先出(FIFO)队列

“C#作业系统”使用“NativeContainer”实现作业和主线程之间的数据共享。用于在Job和主线程之间传递数据。

创建 NativeContainer
创建一个“NativeArray”,即 NativeContainer 之一。第一个参数是“元素的数量”,第二个参数是“内存分配类型”。

内存分配类型有:

・Allocator.Temp:用于分配和释放一帧或更少的内存。
・Allocator.TempJob:4帧内使用的内存分配和释放。
Allocator.Persistent :应用程序生命周期内的持久分配。
http://www.dtcms.com/wzjs/92062.html

相关文章:

  • 江苏建设厅官方网站安全员上海网站关键词排名
  • 嘉兴白酒网站建设百度大搜推广
  • 博山政府网站建设托管竞价排名采用什么计费方式
  • 网站链接跳转怎么做四川seo排名
  • 邢台市人民政府官方网站网站推广 方法
  • 山东淄博微信网站制作淘宝关键词优化
  • 晋城企业网站建设公司百度竞价推广方案
  • 海门住房和城乡建设局网站宁波网络推广
  • 云南建设监理协会网站seo排名赚app靠谱吗
  • 网站初期内容国内免费二级域名建站
  • 免费网站制作域名注册官网
  • 校园网站模版网站关键词如何优化
  • wordpress怎么设计网站网络营销咨询公司
  • 网站建设实训报告建议和其他百度搜索seo优化技巧
  • 网站seo是什么sem推广是什么
  • 做网站和app无锡seo培训
  • 移动应用开发专业介绍优化搜索引擎的方法
  • 免费创建单页网站做网络销售如何找客户
  • 石河子网站建设公司百度首页排名优化价格
  • 腾讯开放平台官网泰州seo网站推广
  • 杭州营销型网站网站流量排名
  • wordpress 建立导航seo工资待遇 seo工资多少
  • 成都网站建设顶呱呱免费发布推广的平台有哪些
  • 门户网站免费建站怎样在百度上免费做广告
  • 收录网站查询seo外链技巧
  • pc网站转换成微网站百度推广电话销售好做吗
  • 网站icogoole官网
  • php做购物网站系统怎么自己建网站
  • 网站建设怎么评估深圳最新消息
  • 什么情况下网站需要备案seo01