一、项目设置
版本:2022.2.0f1
(版本太低的话会安装不了ECS插件)
模板选择3D URP
进来后移除URP(因为并不是真的需要,但也不是完全不需要)
Name: com.unity.entities.graphics
Version: 1.0.0-exp.8
点击Add添加
出现右边这个就是在安装中啦
安装成功~~~
↑推荐的编辑器布局
需要新添加上来的窗口会在下边列出来
把这些窗口打开,方便观察
右键可以多加一个Inspector窗口
项目设置窗口也打开
勾选上,更快进入播放模式
检查一下这几项
二、创建SubScene
顺便在场景里创建一个地板
三、创建Entity
创建一个空实体,命名为Brain
创建好后如图
点击运行,一下出来一堆东西
在运行模式下,把右上角改成Runtime
就变成这样啦
给大脑加上这两个组件,随便来个模型和材质
需要关掉子场景再打开才会刷新哦
如果想真的关掉子场景,需要先点close,然后unload,就消失在场景中了,但一点击运行又会自动回来
四、创建Prefab Entity
创建一个空物体命名为Tombstone,给它创建一个用于渲染的子物体Renderer,给Renderer来个模型和材质,最后把Tombstone做成预制体,再把场景里的删喽。
五、设置场景Entity
创建个空物体,命名为Graveyard
创建一些文件夹用于存放脚本
在ComponentsAndTags文件夹里创建一个脚本叫GraveyardProperties
using Unity.Entities;
using Unity.Mathematics;
namespace ECSdemo
{
public struct GraveyardProperties : IComponentData
//继承这个接口,让这个结构体变成组件,记得引用命名空间
{
public float2 FieldDimensions;
//float2 结构体表示一个包含两个 float 字段的结构体,记得引用命名空间
public int NumberTombstonesToSpawn;
//想要跟踪的数量
public Entity TombstonePrefab;
//墓碑预制件
}
}
此时我们想把这个组件加到Graveyard上,发现搜不到这个组件~还需要一些操作
在AuthoringAndMono文件夹里创建一个脚本叫GraveyardMono
using Unity.Mathematics;
using UnityEngine;
public class GraveyardMono : MonoBehaviour
{
public float2 FieldDimensions;
//float2 结构体表示一个包含两个 float 字段的结构体,记得引用命名空间
public int NumberTombstonesToSpawn;
//想要跟踪的数量
public GameObject TombstonePrefab;
//墓碑预制件
}
把脚本给墓地加上,并给脚本赋值,点击运行,发现其实也没什么变化(っ ̯ -。) 继续写GraveyardMono脚本
using Unity.Entities;
using Unity.Mathematics;
using UnityEngine;
namespace ECSdemo
{
public class GraveyardMono : MonoBehaviour
{
public float2 FieldDimensions;
//float2 结构体表示一个包含两个 float 字段的结构体,记得引用命名空间
public int NumberTombstonesToSpawn;
//想要跟踪的数量
public GameObject TombstonePrefab;
//墓碑预制件
}
public class GraveyardBaker : Baker<GraveyardMono>
{
public override void Bake(GraveyardMono authoring)
{
AddComponent(new GraveyardProperties
{
FieldDimensions = authoring.FieldDimensions,
NumberTombstonesToSpawn = authoring.NumberTombstonesToSpawn,
TombstonePrefab = GetEntity(authoring.TombstonePrefab)
//GetEntity:把GameObject变成Entity
});
}
}
}
点击运行,发现能在面板上看到了~