正文内容加载中...
posted @ 2021-05-11 20:37 斯芬克斯 阅读(2) 评论(0) 推荐(0) 编辑
摘要:当我们想要在多个Component之间共享数据时,会想到哪些方案呢? (1)SritptableObject (2)NativeArray (3)ISharedDataComponent (4)BlobAsset (5)unsafe void* (6)... 不错,这些都是常用手段,但是区别甚大,并 阅读全文
posted @ 2020-06-10 23:54 斯芬克斯 阅读(206) 评论(0) 推荐(0) 编辑
摘要:各个工作线程的随机数种子是稳定的,RandomSystem的实现如下: using Unity.Entities; using Unity.Jobs; using Unity.Burst; using Unity.Collections; using Unity.Jobs.LowLevel.Unsa 阅读全文
posted @ 2020-06-10 21:37 斯芬克斯 阅读(395) 评论(2) 推荐(0) 编辑
摘要:将一个方块的AnimationClip数据导出,然后以BlobAsset的方式在JobSystem中并行计算,以提升效率: (1)编辑态,将AnimationClip转为SriptableObject数据,进行存储; (2)运行时,将ScriptableObject数据转换为BlobAsset对象, 阅读全文
posted @ 2020-04-01 03:04 斯芬克斯 阅读(999) 评论(0) 推荐(0) 编辑
摘要:按照一般的写法,write会产生race condition,所以需要通过依赖关系按顺序执行: using UnityEngine; using Unity.Jobs; using Unity.Collections; using Unity.Collections.LowLevel.Unsafe; 阅读全文
posted @ 2020-03-08 23:51 斯芬克斯 阅读(1178) 评论(0) 推荐(0) 编辑
摘要:定义: 使用WriteGroup标记了同一个component的components就属于一个WriteGroup: public struct W : IComponentData { public int Value; } [WriteGroup(typeof(W))] public struc 阅读全文
posted @ 2020-02-29 21:58 斯芬克斯 阅读(403) 评论(0) 推荐(0) 编辑
摘要:结构性修改Structural changes: 任何导致entity的原型(archetype)变化,或者entity在chunk中的存储位置变化的修改,都叫做结构性修改。 以下操作皆为结构性修改: 创建或销毁entity 添加或移除component 修改shared component的值 同 阅读全文
posted @ 2020-02-29 21:57 斯芬克斯 阅读(166) 评论(0) 推荐(0) 编辑
摘要:ECS systems的主要任务就是读取一系列的components数据,计算以后将结果写入其他的components。那么如何高效地读写数据就是很重要的,而有效的方法就是利用cpu的多核特性来并行地读取和处理数据。 ECS提供了多种完成这个任务的方式,每一种都有自己的规则和约束: API 说明 J 阅读全文
posted @ 2020-02-29 16:16 斯芬克斯 阅读(1124) 评论(0) 推荐(0) 编辑
摘要:Systems 提供logic,驱动数据的变更。 Unity ECS会自动在运行时收集所有的systems并进行实例化。 Systems在World中以group的方式来组织,你可以控制将一个system放到哪个group以及这个system在group中的执行顺序(通过system attribu 阅读全文
posted @ 2020-02-16 23:56 斯芬克斯 阅读(404) 评论(0) 推荐(0) 编辑
摘要:Components ECS的Component基于以下这些interface来实现: 类型 说明 IComponentData 常用组件,或者chunk components IBufferElementData 用于将dynamic buffer和entity关联 DynamicBuffer<T 阅读全文
posted @ 2020-02-16 01:00 斯芬克斯 阅读(626) 评论(0) 推荐(1) 编辑