using ECB = EntityCommandBuffer.ParallelWriter;
public interface IDealEvent<TData>
where TData : IComponentData
{
public bool DealEvent(in TData eventValue, ref TData data);
}
public class EventSystem<TData,TDealer> : SystemBase
where TData : struct,IComponentData
where TDealer : struct,IDealEvent<TData>
{
public struct Event : IComponentData
{
public Entity Receiver;
public TData Value;
}
struct EventJob : IJobEntityBatch
{
public ComponentDataFromEntity<TData> datas;
[ReadOnly] public EntityTypeHandle entityHandle;
[ReadOnly] public ComponentTypeHandle<Event> eventHandle;
public ECB ecb;
public TDealer dealer;
public void Execute(ArchetypeChunk batchInChunk, int batchIndex)
{
var events = batchInChunk.GetNativeArray(eventHandle)
放一个Dots Event的简单实现代码
最新推荐文章于 2023-12-07 10:35:54 发布
本文介绍了一个基于Unity ECS框架的通用事件系统实现方案。该方案通过定义接口和泛型类来处理各种类型的游戏内事件,如HP变化等。通过使用Job System和Entity Command Buffer,实现了高效并行处理事件的能力。

最低0.47元/天 解锁文章
1389

被折叠的 条评论
为什么被折叠?



