UE Viewer :https://github.com/gildor2/UEViewer
使用方法
解压后打开 umodel.exe ,在 Path to game files 中找到游戏路径,勾选 Override game detection
选择 UE4,并找到 ARK ,在 View / export object types 中可以选择想要查看和导出的文件类型
最后找到需要的文件点击 Export 即可导出
目前 UE Viewer 适配的游戏
AssetStudio:https://github.com/Perfare/AssetStudio/releases
UnityAssetsExplorer:https://archive.org/download/UnityAssetsExplorer
使用方法
对 Bundles 文件进行解包,选中 .bundle 文件
点击 File → Load Folder,找到刚才解包的文件夹,选择 content.bundle_unpacked 文件夹
找到想要的模型,点击 Model → Export selected objects 选择一个文件夹进行导出
当一个实体被删除时,会有以下几步操作
但当存在 State 组件时,实体不会被删除,只会删除除了 State 组件以外的组件
当配合使用 StateComponentData 与 ComponentData 时可以实现观察实体当前的状态
Tag(ComponentData) | State(StateComponentData) |
---|---|
Tag 存在,State 缺失 | 实体刚被创建,未被初始化 |
Tag 存在,State 存在 | 实体已被初始化,可以使用 |
Tag 存在,State 存在 | 实体处于删除状态 |
例如:
Entities
.WithAll<Tag>()
.WithNone<State>()
.WithStructuralChanges()
.ForEach((Entity entity) =>{
// Spawn
}).Run();
Entities
.WithAll<Tag>()
.WithAll<State>()
.ForEach((Entity entity) =>{
// Update
}).Run();
Entities
.WithNone<Tag>()
.WithAll<State>()
.ForEach((Entity entity) =>{
// Destroy
}).Run();
( EntityCommandBuffer 以下简称 ECB)
ECB 主要解决了两个问题
结构化改变包括
同步点
当我们在使用 Job 时,为了防止多线程运行时对同一个实体进行了冲突的操作时,同步点的存在是必要的
例如:当线程 A 对实体 a1 的组件进行了删除操作,线程 B 又去获取实体 a1 被删除的组件时,就会发生错误
所以当我们使用了 Job 的多线程时,需要使用 ECB 来延迟结构化改变操作,统一到同步点内再进行操作