【不用找素材】ECS 游戏Demo制作教程(1) 1.15

一、项目设置

版本:2022.2.0f1
(版本太低的话会安装不了ECS插件)

【不用找素材】ECS 游戏Demo制作教程(1) 1.15_第1张图片

模板选择3D URP

【不用找素材】ECS 游戏Demo制作教程(1) 1.15_第2张图片

进来后移除URP(因为并不是真的需要,但也不是完全不需要)

【不用找素材】ECS 游戏Demo制作教程(1) 1.15_第3张图片

【不用找素材】ECS 游戏Demo制作教程(1) 1.15_第4张图片

【不用找素材】ECS 游戏Demo制作教程(1) 1.15_第5张图片

Name: com.unity.entities.graphics

Version: 1.0.0-exp.8

点击Add添加

【不用找素材】ECS 游戏Demo制作教程(1) 1.15_第6张图片

出现右边这个就是在安装中啦

【不用找素材】ECS 游戏Demo制作教程(1) 1.15_第7张图片

安装成功~~~

【不用找素材】ECS 游戏Demo制作教程(1) 1.15_第8张图片

↑推荐的编辑器布局

需要新添加上来的窗口会在下边列出来

【不用找素材】ECS 游戏Demo制作教程(1) 1.15_第9张图片

把这些窗口打开,方便观察

【不用找素材】ECS 游戏Demo制作教程(1) 1.15_第10张图片

右键可以多加一个Inspector窗口

【不用找素材】ECS 游戏Demo制作教程(1) 1.15_第11张图片

项目设置窗口也打开

【不用找素材】ECS 游戏Demo制作教程(1) 1.15_第12张图片

勾选上,更快进入播放模式

【不用找素材】ECS 游戏Demo制作教程(1) 1.15_第13张图片

【不用找素材】ECS 游戏Demo制作教程(1) 1.15_第14张图片

【不用找素材】ECS 游戏Demo制作教程(1) 1.15_第15张图片

检查一下这几项

二、创建SubScene

【不用找素材】ECS 游戏Demo制作教程(1) 1.15_第16张图片

【不用找素材】ECS 游戏Demo制作教程(1) 1.15_第17张图片

顺便在场景里创建一个地板

【不用找素材】ECS 游戏Demo制作教程(1) 1.15_第18张图片

三、创建Entity

【不用找素材】ECS 游戏Demo制作教程(1) 1.15_第19张图片

创建一个空实体,命名为Brain

创建好后如图

【不用找素材】ECS 游戏Demo制作教程(1) 1.15_第20张图片

点击运行,一下出来一堆东西

【不用找素材】ECS 游戏Demo制作教程(1) 1.15_第21张图片

在运行模式下,把右上角改成Runtime

【不用找素材】ECS 游戏Demo制作教程(1) 1.15_第22张图片

就变成这样啦

【不用找素材】ECS 游戏Demo制作教程(1) 1.15_第23张图片

给大脑加上这两个组件,随便来个模型和材质

【不用找素材】ECS 游戏Demo制作教程(1) 1.15_第24张图片

需要关掉子场景再打开才会刷新哦

如果想真的关掉子场景,需要先点close,然后unload,就消失在场景中了,但一点击运行又会自动回来

【不用找素材】ECS 游戏Demo制作教程(1) 1.15_第25张图片

四、创建Prefab Entity

【不用找素材】ECS 游戏Demo制作教程(1) 1.15_第26张图片

创建一个空物体命名为Tombstone,给它创建一个用于渲染的子物体Renderer,给Renderer来个模型和材质,最后把Tombstone做成预制体,再把场景里的删喽。

五、设置场景Entity

【不用找素材】ECS 游戏Demo制作教程(1) 1.15_第27张图片

创建个空物体,命名为Graveyard

【不用找素材】ECS 游戏Demo制作教程(1) 1.15_第28张图片

创建一些文件夹用于存放脚本

在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;
    //墓碑预制件
}

【不用找素材】ECS 游戏Demo制作教程(1) 1.15_第29张图片

把脚本给墓地加上,并给脚本赋值,点击运行,发现其实也没什么变化(っ ̯ -。) 继续写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
    {
        public override void Bake(GraveyardMono authoring)
        {
            AddComponent(new GraveyardProperties
            {
                FieldDimensions = authoring.FieldDimensions,
                NumberTombstonesToSpawn = authoring.NumberTombstonesToSpawn,
                TombstonePrefab = GetEntity(authoring.TombstonePrefab)
                //GetEntity:把GameObject变成Entity
            });

        }
    }

}

【不用找素材】ECS 游戏Demo制作教程(1) 1.15_第30张图片

点击运行,发现能在面板上看到了~

你可能感兴趣的:(游戏)