使用Unity Dots创建一个最简单的例子----打印

Dots简单例子----打印

 ECS分为三个部分:

Entity 实体

Component 组件:数据存放于数据组件

System 系统:函数放于系统

一、使用步骤

1.引入库

unity中: windows --->Package Manager:搜索Entities和Hybrid Renderer并安装

 

2.创建脚本PrintComponentData1

该脚本为数据组件,用来存放数据 

代码如下(示例):

using System.Collections;
using System.Collections.Generic;
using Unity.Entities;
using UnityEngine;

/// <summary>
/// 组件
/// </summary>
public struct PrintComponentData1 : IComponentData
{
    public float data;
}

 该结构体继承于IComponentData,表面其为数据组件

3.创建系统PrintSystem1

using System.Collections;
using System.Collections.Generic;
using Unity.Entities;
using UnityEngine;

public class PrintSystem1 : ComponentSystem
{
    protected override void OnUpdate()
    {
        Entities.ForEach((ref PrintComponentData1 data1) =>
        {
            Debug.Log(data1.data);
        });
        
    }
}

继承于ComponentSystem类,必须重载抽象函数OnUpdate()

使用ForEach函数,该函数参数为一个lambda表达式,传入了数据组件 对象data1,并用log函数输出

4.创建实体

 将游戏对象gameObject转换为Entity实体

引入ConvertToEntity组件(Dots中的脚本:用来将游戏物体转换为实体) 

5. 创建脚本PrintAuthoring1(挂载于游戏物体(实体)上)

1.用来转换实体的脚本

2.继承于monobehaviour和IConvertGameObjectToEntity

3.在这个类中必须实现接口中的Convert(),可以在这个函数中将不能挂载在unity面板中的组件挂载到实体上

using System.Collections;
using System.Collections.Generic;
using Unity.Entities;
using UnityEngine;

public class PrintAuthoring1 : MonoBehaviour, IConvertGameObjectToEntity
{
    public void Convert(Entity entity, EntityManager dstManager, GameObjectConversionSystem conversionSystem)
    {
        //使用EntityManager对象dstManager的AddComponentData函数(实体,需要挂载的组件)
        dstManager.AddComponentData(entity,new PrintComponentData1());
    }
}

 此时运行即可得到log信息,但不能在unity面板中可视化修改

 

 实现可视化修改

using System.Collections;
using System.Collections.Generic;
using Unity.Entities;
using UnityEngine;

public class PrintAuthoring1 : MonoBehaviour, IConvertGameObjectToEntity
{
    public float data;
    public void Convert(Entity entity, EntityManager dstManager, GameObjectConversionSystem conversionSystem)
    {
        //使用EntityManager对象dstManager的AddComponentData函数(实体,需要挂载的组件)
        dstManager.AddComponentData(entity,new PrintComponentData1() { data = data});
    }
}

第一个data为组件中的,第二个data是 public float data;

 

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值