我正试图从一个Reality Composer项目中的一个场景中加载一个Entity
到我的代码中.
我直接接触到自动生成的.reality
文件,因为我不希望它自动放置在它检测到的第一个平面上.我遵循了文章Taking Control of Scene Anchoring中的文档.
样本项目的名称是Experience
,在那里我有2个场景.
- 自动生成的框,它自动随新创建的项目一起提供.
- 一个六边形的导入USDZ文件.
我用来加载两者作为ModelEntity
的代码如下:
let url = Bundle.main.url(forResource: "Experience",
withExtension: "reality")!
.appending(path: "SceneName", directoryHint: .notDirectory)
let modelEntity = try! Entity.loadModel(contentsOf: url)
其中SceneName
要么是Box
,要么是Hexagon
.
两个都无法加载.
如果我改用以下代码,它们会成功,但它们被加载为Entity
,而不是ModelEntity
:
let modelEntity = try! Entity.load(contentsOf: url)
是否可以将对象加载为ModelEntity
而不是Entity
?到目前为止,我在这post中找到的方法是遍历子层次,找到第一个ModelEntity
,并将其模型和物理复制到其父对象上(在我的例子中,这是可行的,因为我在场景中只有一个对象).
Edit:即使我命名场景中的对象,然后try 使用在场景中找到的"根"Entity
对象上的findEntity(named:)
方法获取它们,我也会再次得到Entity
,而不是ModelEntity
.