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

Unity DOTS从入门到精通之 自定义Authoring类

文章目录

    • 前言
    • 安装 DOTS 包
    • 什么是Authoring
    • 1. 实体组件
    • 2. Authoring类

前言

DOTS(面向数据的技术堆栈)是一套由 Unity 提供支持的技术,用于提供高性能游戏开发解决方案,特别适合需要处理大量数据的游戏,例如大型开放世界游戏。
我们今天来讲一下,Dots框架中,Authoring类的创建和使用。

  • 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等)。

在这里插入图片描述

什么是Authoring

Authoring 类通常用于定义和管理实体和组件的元数据以及如何进行编辑和创建。
这一类主要的功能包括:

1.实体和组件定义:Authoring 类可以用于声明或定义在游戏中使用的不同实体和组件。这使得开发者可以方便地创建和配置其对应的数据结构。

2.编辑器集成:这些类通常与 Unity 编辑器相结合,使开发者可以在编辑模式下直观地创建和配置游戏实体。它们提供了可视化的工具,以便非程序员也可以参与设计游戏内容。

3.数据管理:Authoring 类帮助管理数据的加载、保存和版本控制。它们可以帮助开发者组织复杂的数据结构,使得资源管理更加高效。

4.转换为运行时组件:这些类通常还包括逻辑,将数据在编辑器中设置的状态转换为运行时可以使用的实体和组件。这一转化通常伴随着实体的创建和初始化过程。

1. 实体组件

新建一个Rotator的ComponentData组件

using Unity.Entities;

public struct Rotator : IComponentData
{
    public float speed;
}

2. Authoring类

using UnityEngine;
using Unity.Entities;

public class RotatorAuthoring : MonoBehaviour
{
    public float Speed;

    //将 MonoBehaviour 的 RotatorAuthoring 组件数据(如 Speed)
    //转换为 ECS 的 Rotator 组件数据(IComponentData)
    public class RotatorBaker : Baker<RotatorAuthoring>
    {
        public override void Bake(RotatorAuthoring authoring)
        {
            //通过Bake方式,把当前游戏对象转换为Entity
            var entity = GetEntity(TransformUsageFlags.Dynamic);
            //给Entity添加数据组件
            AddComponent(entity, new Rotator { speed = authoring.Speed });
        }
    }
}

在这里插入图片描述

相关文章:

  • 1:1精准还原!用Python+Adobe Acrobat DC实现PDF转Word全自动化
  • 【Git】合并,删除分支
  • JVM - 3.垃圾回收
  • 启智平台华为昇腾910B使用MS-Swift微调Janus-Pro-7/1B
  • Spring(1)——mvc概念,部分常用注解
  • CS6212规格书/USB Type-C Retimer Switch芯片规格详细说明
  • cheby kan网络 与代码学习
  • Android打造易用的 WiFi 工具类:WifiUtils 封装实践
  • 深度学习 PyTorch 中 18 种数据增强策略与实现
  • 40岁开始学Java:如何实现依赖注入?
  • vue+element-plus简洁完美实现古诗文网
  • VSCode配置优化指南:构建高效工程级开发环境
  • Linux操作系统6- 线程1(线程基础,调用接口,线程优缺点)
  • 学习笔记:利用OpenAI实现阅卷智能体
  • AcWing 5438. 密接牛追踪2 区间覆盖问题的详细解释
  • 关闭Windows安全中心,解析与实操指南
  • Git基础之工作原理
  • Spark 3.0核心新特性解析与行业应用展望
  • Docker部署Ragflow(完美解决502 bad gateway)
  • 【RocketMQ 存储】- 异常退出恢复逻辑 recoverAbnormally
  • 成就彼此,照亮世界:“中欧建交50周年论坛”在沪成功举行
  • 印度最新发声:对所有敌对行动均予以反击和回应,不会升级冲突
  • 图集|俄罗斯举行纪念苏联伟大卫国战争胜利80周年阅兵式
  • 理财经理泄露客户信息案进展:湖南省检受理申诉,证监会交由地方监管局办理
  • 长江画派创始人之一、美术家鲁慕迅逝世,享年98岁
  • 75岁亚当·费舍尔坐镇,再现80分钟马勒《第九交响曲》