Unity实体不在播放模式下渲染

Unity Entities not rendering in play mode

我尝试使用代码实例化一个实体:

blobAssetStore = new BlobAssetStore();
GameObjectConversionSettings settings = GameObjectConversionSettings.FromWorld(defaultWorld,blobAssetStore);
Entity entity = GameObjectConversionUtility.ConvertGameObjectHierarchy(gameObjectPrefab, settings);      
entityManager.SetComponentData(entity, new Translation { Value = position });

我试过使用 ConvertToEntity 脚本。我还创建了一个子场景,这三种方法都没有渲染。我可以在 Entity Debugger 中看到实体,所有实体都有一个 Translation,以及相关的渲染组件,一切看起来都很好。这些是我安装的 ECS 包:

使用Unity 2020.1.0b12.3931

欢迎提出任何建议和想法

我发现了问题,似乎即使这行代码创建了一个实体:

Entity entityPrefab = GameObjectConversionUtility.ConvertGameObjectHierarchy(gameObjectPrefab, settings);

它没有设置LocalToWorld坐标如下:

如果我在上面一行之后调用 Instantiate,使用之前创建的实体:

Entity entity = entityManager.Instantiate(entityPrefab);

然后将 LocalToWorld 设置为正确传入的 Translation 位置:

即使我尝试使用以下方法将 LocalToWorld 组件设置到正确的位置:

 entityManager.SetComponentData(entityPrefab, new LocalToWorld { Value = new float4x4(quaternion.identity, position) });

还是没有显示,我目前唯一的猜测是它有一个Prefab组件附加在上面,如下图:

虽然即使尝试删除此组件也不会显示创建的实体:

 entityManager.RemoveComponent(entityPrefab, typeof(Prefab));

我正在做一些更多的研究,以了解为什么会这样 post 这里有任何发现。 完整的代码现在看起来像这样:

private void InstantiateEntity(float3 position)
{
    blobAssetStore = new BlobAssetStore();
    GameObjectConversionSettings settings = GameObjectConversionSettings.FromWorld(defaultWorld, blobAssetStore);        
    Entity entityPrefab = GameObjectConversionUtility.ConvertGameObjectHierarchy(gameObjectPrefab, settings);
    Entity entity = entityManager.Instantiate(entityPrefab);
    entityManager.SetComponentData(entity, new Translation { Value = position });        
}

我希望这对以后的人有所帮助。