Entitas 中的Event 添加一个分数控制

Event特性可以使得模拟层和视图层完全解耦

目标: 使得点击一下鼠标 增加一次分数 (基于Entitas的Written Tutorials的第一个Hello world)

Component

[Game, Unique, Event(true)]
public class ScoreComponent:IComponent {
    public int value;
}

System

public class ScoreSystem : ReactiveSystem<GameEntity>, IInitializeSystem
{
    readonly Contexts _contexts;

    public ScoreSystem(Contexts contexts):base(contexts.game)
    {
        _contexts = contexts;
    }

    /// <summary>
    /// 初始化
    /// </summary>
    public void Initialize()
    {
        _contexts.game.SetScore(0);
    }

    protected override void Execute(List<GameEntity> entities)
    {
        _contexts.game.ReplaceScore(_contexts.game.score.value + 1);
    }

    protected override bool Filter(GameEntity entity)
    {
        return entity.hasDebugMessage;
    }

    protected override ICollector<GameEntity> GetTrigger(IContext<GameEntity> context)
    {
        return context.CreateCollector(GameMatcher.DebugMessage);
    }
}

在GameSystem里添加生成的 Add(new GameEventSystems(contexts));

Monobehavior(启动脚本)

public class ScoreLabelController : MonoBehaviour, IScoreListener {

    public Text label;

    void Start () {
        // scoreEntity是单例
        Contexts.sharedInstance.game.scoreEntity.AddScoreListener(this);
    }

    public void OnScore(GameEntity entity, int value)
    {
        label.text = "Score: " + value;
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值