我仅创建RealityKit的新属性。 Xcode将无法预览SwiftUI画布。 但是它可以成功构建。
import SwiftUI
import RealityKit
struct ContentView : View {
var body: some View {
return VStack {
Text("123")
ARViewContainer().edgesIgnoringSafeArea(.all)
}
}
}
struct ARViewContainer: UIViewRepresentable {
func makeUIView(context: Context) -> ARView {
let arView = ARView(frame: .zero)
// Load the "Box" scene from the "Experience" Reality File
let boxAnchor = try! Experience.loadBox()
// Add the box anchor to the scene
arView.scene.anchors.append(boxAnchor)
return arView
}
func updateUIView(_ uiView: ARView, context: Context) {}
}
#if DEBUG
struct ContentView_Previews : PreviewProvider {
static var previews: some View {
ContentView()
}
}
#endif
let test: AnchoringComponent.Target.Alignment = .horizontal
'Alignment'不是'AnchoringComponent.Target'的成员类型
我很困惑我遇到了什么。 有人遇到过同样的问题吗?
答案 0 :(得分:1)
您必须解决几个问题:
- 您不能在iOS模拟器或 SwiftUI Canvas Preview 中使用
anchoring component
,因为它只能用于将虚拟内容固定为真实内容。世界表面。 因此,没有适用于AR应用的模拟器。
RealityKit锚在iOS模拟器模式和SwiftUI Canvas预览模式下无用。
// Use it only for compiled AR app, not simulated...
let _: AnchoringComponent.Target.Alignment = .horizontal
不仅锚在iOS Simulator Mode
和SwiftUI Preview Mode
中是无用的,而且其他面向会话的属性(包括ARView.session)也无用,例如您在图片上看到的:< / p>
- 将ARView中的
.backgroundColor
更改为其他任何所需的值。默认颜色有时使您无法看到RealityKit场景。看起来像个错误。
func makeUIView(context: Context) -> ARView {
let arView = ARView(frame: .zero)
let boxAnchor = try! Experience.loadBox()
boxAnchor.steelBox?.scale = SIMD3(5, 5, 5)
boxAnchor.steelBox?.orientation = simd_quatf(angle: Float.pi/4, axis: SIMD3(1,1,0))
arView.backgroundColor = .orange
arView.scene.anchors.append(boxAnchor)
return arView
}
现在您可以在SwiftUI预览区域中看到以下内容:
- 当然,在使用AR应用程序之前,您必须给
Camera Permission
。不管您使用什么:Storyboard或SwiftUI。
您需要在Camera Usage Description
文件中添加 arkit
属性和 info.plist
字符串:
XML版本如下:
/* info.plist
<key>NSCameraUsageDescription</key>
<string>Camera access for AR experience</string>
<key>UIRequiredDeviceCapabilities</key>
<array>
<string>armv7</string>
<string>arkit</string>
</array>
*/
解决这些问题后,应用可以编译并按预期运行(没有任何错误):