版本:unity 2017.1 语言:C#
总起:
这一章更加深入的介绍Entitas的各个System的编写,刚开始接触的童鞋请先看上一篇文章,该篇内容会紧接着之前的内容编写程序。
之前谈到了现在的Entitas框架中有两大Context,其一是之前用过的game,其二是今天要介绍的input,看到名字自然也就是知道,该Context环境是用来处理玩家的输入的。
*在生成代码的时候可能会报一个Could not found file ‘...’的一个错误,这个是项目名称错了,定位到项目的根目录,把csproj的整个文件名复制到Project Path中就好。
Hello World的补充:
打开之前文章完成后的工程,运行后发现打印了HelloWorld,但Entity下的DebugMessage组件仍旧存在,按照道理来说,这个Entity打印完内容之后就没什么用了,可以销毁了。
这边就先来介绍CleanupSystem来销毁多余的组件。
♦ Cleanup System
之前在写GameController的时候其实留了一手,让程序集执行完Execute后,执行了Cleanup。而可以Cleanup的System只需要实现ICleanupSystem就可以了。
让我们来看代码:
// CleanupDebugMessageSystem.cs
using System;
using Entitas;
// 继承于ICleanupSystem
public class CleanupDebugMessageSystem : ICleanupSystem
{
// 保存game环境
readonly GameContext _context;
// 保存所有拥有DebugMessage组件的Entity
readonly IGroup<GameEntity> _debugMessages;
// 构造函数,添加game环境和保存拥有DebugMessage组件的Group
public CleanupDebugMessageSystem(Contextscontexts)
{
_context = con