Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2012/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Unity3d 未在播放模式下渲染Unity实体_Unity3d_Unity Dots_Unity Ecs - Fatal编程技术网

Unity3d 未在播放模式下渲染Unity实体

Unity3d 未在播放模式下渲染Unity实体,unity3d,unity-dots,unity-ecs,Unity3d,Unity Dots,Unity Ecs,我尝试使用以下代码实例化实体: blobAssetStore = new BlobAssetStore(); GameObjectConversionSettings settings = GameObjectConversionSettings.FromWorld(defaultWorld,blobAssetStore); Entity entity = GameObjectConversionUtility.ConvertGameObjectHierarchy(gameObjectPrefa

我尝试使用以下代码实例化实体:

blobAssetStore = new BlobAssetStore();
GameObjectConversionSettings settings = GameObjectConversionSettings.FromWorld(defaultWorld,blobAssetStore);
Entity entity = GameObjectConversionUtility.ConvertGameObjectHierarchy(gameObjectPrefab, settings);      
entityManager.SetComponentData(entity, new Translation { Value = position });
我尝试过使用ConvertToEntity脚本。我还创建了一个子场景,这三种方法都没有渲染。我可以在实体调试器中看到实体,所有实体都有转换,以及相关的渲染组件,一切看起来都很好。以下是我安装的ECS包:

突发事件1.3.3 集合0.9.0-预览。6 实体0.11.1-preview.4 混合渲染器0.5.2-preview.4 作业0.2.10-0.12 使用Unity 2020.1.0b12.3931


欢迎提出任何建议和想法

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

Entity entityPrefab = GameObjectConversionUtility.ConvertGameObjectHierarchy(gameObjectPrefab, settings);
它不会按如下方式设置LocalToWorld坐标:

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

Entity entity = entityManager.Instantiate(entityPrefab);
然后将LocalToWorld设置为正确的传入平移位置:

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

 entityManager.SetComponentData(entityPrefab, new LocalToWorld { Value = new float4x4(quaternion.identity, position) });
它仍然没有显示,我目前唯一的猜测是它连接了一个预制组件,如下所示:

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

 entityManager.RemoveComponent(entityPrefab, typeof(Prefab));
我正在做一些关于为什么会这样的研究,并将在这里发布任何发现。 现在,完整的代码如下所示:

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 });        
}

我希望这对将来的人有所帮助。

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

Entity entityPrefab = GameObjectConversionUtility.ConvertGameObjectHierarchy(gameObjectPrefab, settings);
它不会按如下方式设置LocalToWorld坐标:

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

Entity entity = entityManager.Instantiate(entityPrefab);
然后将LocalToWorld设置为正确的传入平移位置:

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

 entityManager.SetComponentData(entityPrefab, new LocalToWorld { Value = new float4x4(quaternion.identity, position) });
它仍然没有显示,我目前唯一的猜测是它连接了一个预制组件,如下所示:

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

 entityManager.RemoveComponent(entityPrefab, typeof(Prefab));
我正在做一些关于为什么会这样的研究,并将在这里发布任何发现。 现在,完整的代码如下所示:

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 });        
}

我希望这能对将来的人有所帮助。

是你在转换一个预设,正如名字所暗示的,或者是一个来自层次结构的游戏对象。我在转换一个预设,而不是在层次结构中。我已经尝试将预置放在层次结构中,只是使用ConvertToEntity脚本,但这也没有显示出来。正在尝试降级某些包以与现在显示实体的项目相匹配。它是2D还是3D预制?你需要旋转吗?这是一个3D预制件。问题是它根本没有渲染。但是我发现了我的错误。谢谢。是你正在转换的一个预置,正如名字所暗示的,或者是一个来自层次结构的游戏对象。我正在转换一个预置,而不是在层次结构中。我已经尝试将预置放在层次结构中,只是使用ConvertToEntity脚本,但这也没有显示出来。正在尝试降级某些包以与现在显示实体的项目相匹配。它是2D还是3D预制?你需要旋转吗?这是一个3D预制件。问题是它根本没有渲染。但是我发现了我的错误。非常感谢。