基于Unity2019最新ECS架构开发MMO游戏笔记6
官方案例解析7
开始之前的准备工作:
- 官方案例解析7
- 开始之前的准备工作:
- 7. SpawnAndRemove
- 小结
- DOTS 逻辑图表
- 更新计划
- 作者的话
- ECS系列目录
- ECS官方示例1:ForEach
- ECS官方案例2:IJobForEach
- ECS官方案例3:IJobChunk
- ECS官方案例4:SubScene
- ECS官方案例5:SpawnFromMonoBehaviour
- ECS官方案例6:SpawnFromEntity
- ECS官方案例7:SpawnAndRemove
- ECS进阶:FixedTimestepWorkaround
- ECS进阶:Boids
- ECS进阶:场景切换器
- ECS进阶:MegaCity0
- ECS进阶:MegaCity1
- UnityMMO资源整合&服务器部署
- UnityMMO选人流程
- UnityMMO主世界
0下载Unity编辑器(2019.1.0f1 or 更新的版本),if(已经下载了)continue; 1下载官方案例,打开Git Shell输入: git clone https://github.com/Unity-Technologies/EntityComponentSystemSamples.git --recurse
or 点击Unity官方ECS示例下载代码 if(已经下载了)continue; 2用Unity Hub打开官方的项目:ECSSamples 3在Assets目录下找到HelloCube/7. SpawnAndRemove,并打开SpawnAndRemove场景
上一个案例演示了如何使用实体来生成别的实体,那么有生成,自然就有移除,下面一起来一探究竟吧:
- Main Camera ……主摄像机
- Directional Light……光源
- Spawner……旋转方块生成器
打开Spawner生成器的Inspector窗口,我们发现这个案例是建议在第六个之上的,因为它也是先将自身转化成实体,再生成别的实体。所以我们忽略相同之处,看不同的地方,也就是移除操作了。
- 实体和案例六几乎一致,所以对应的Entity脚本SpawnerAuthoring_SpawnAndRemove就跳过了。
- Component组件脚本Spawner_SpawnAndRemove也跳过,该脚本存储的数据和案例六几乎一致。
- 实体生成实体的System和案例六一致,所以SpawnerSystem_SpawnAndRemove跳过。
因此移除操作就只能在LifeTimeSystem(生命周期系统)实现了,且看:
///
/// 生命周期,这里属于Component
///
public struct LifeTime : IComponentData
{
public float Value;
}
///
/// 这个系统负责场景中所有实体的生命周期
/// 也可以将其改装来负责特定实体的生命周期,添加刷选条件Filter即可
///
public class LifeTimeSystem : JobComponentSystem
{
///
/// 实体命令缓存系统--阻塞
///
EntityCommandBufferSystem m_Barrier;
///
/// 将阻塞缓存起来
///
protected override void OnCreate()
{
m_Barrier = World.GetOrCreateSystem();
}
[BurstCompile]//Burst加速编译器
struct LifeTimeJob : IJobForEachWithEntity
{
public float DeltaTime;
[WriteOnly]//只写
public EntityCommandBuffer.Concurrent CommandBuffer;
///
/// 每帧执行,如果寿命 < 0 则摧毁实体
///
/// 实体
/// 任务索引
/// 寿命
public void Execute(Entity entity, int jobIndex, ref LifeTime lifeTime)
{
lifeTime.Value -= DeltaTime;
if (lifeTime.Value
关注
打赏
最近更新
- 深拷贝和浅拷贝的区别(重点)
- 【Vue】走进Vue框架世界
- 【云服务器】项目部署—搭建网站—vue电商后台管理系统
- 【React介绍】 一文带你深入React
- 【React】React组件实例的三大属性之state,props,refs(你学废了吗)
- 【脚手架VueCLI】从零开始,创建一个VUE项目
- 【React】深入理解React组件生命周期----图文详解(含代码)
- 【React】DOM的Diffing算法是什么?以及DOM中key的作用----经典面试题
- 【React】1_使用React脚手架创建项目步骤--------详解(含项目结构说明)
- 【React】2_如何使用react脚手架写一个简单的页面?