一、目的
- 实现生成Cube
- 随机移动Cube
- 随机修改方向数据
- 移动
二、开始
1、构建一个CubeMoveAuthoring类,用于将数据拿进ECS
2、创建一些需要的ComponentData
- SpawnerObjComponentData:用于生成cube
- CubeMoveComponentData:用于移动
- ChangeMoveDirIntervalComponentData:用于切换移动方向的计时器数据
using Unity.Entities;
using Unity.Mathematics;
using UnityEngine;
namespace DEMO._01_CubeMove
{
/// <summary>
/// 场景中挂载的,类似Config的东西
/// </summary>
public class CubeMoveAuthoring : MonoBehaviour
{
// 随机切换位置的时间
public float intervalTime;
// 生成的数量
public int spawnerCount;
// 最小速度
public float minSpeed;
// 最大速度
public float maxSpeed;
// 生成的obj原型
public GameObject obj;
// 构建Baker
private class CubeMoveBaker : Baker<CubeMoveAuthoring>
{
public override void Bake(CubeMoveAuthoring authoring)
{
// 动态构建一个Entity
var entity = GetEntity(TransformUsageFlags.Dynamic);
// 给这个Entity添加SpawnerObjComponentData组件
AddComponent(entity,new SpawnerObjComponentData()
{
spawnerCount = authoring.spawnerCount,
spawnerObj = GetEntity(authoring.obj,TransformUsageFlags.Dynamic),
minSpeed = authoring.minSpeed,
maxSpeed = authoring.maxSpeed,
intervalTime = authoring.intervalTime
});
}
}
}
// 用于将编辑器里的值拿给ECS 的Bake用组件
publ