1

我正在尝试从 ARView 扩展更新 globalDataTransfer 类并将更改反映到 ArView。下面是 globalDataTransfer 函数

 class globalDataTransfer: ObservableObject{
    
    @Published var val: String = "No Value"
    
    required init  (any : String){
        self.val = any
    }
    
    func check() -> String{
        return(self.val)
    }
}

我的 ARViewContainer

struct ARViewContainer: UIViewRepresentable  {
    
    func makeUIView(context: UIViewRepresentableContext<ARViewContainer>) -> ARView {
        let arView = ARView(frame: .zero,cameraMode: .ar,automaticallyConfigureSession: true)
        arView.setupForBodyTracking()
        arView.scene.addAnchor(bodySkeletonAnchor)
        return(arView)
    }
    
    func updateUIView(_ uiView: ARView, context: Context) {
    }
    
    typealias UIViewType = ARView
}

我的 ARView 扩展是

extension ARView: ARSessionDelegate{
    
    func setupForBodyTracking(){
        let config = ARBodyTrackingConfiguration()
        self.session.run(config)
        self.session.delegate = self
    }
    
    public func session(_ session: ARSession, didUpdate anchors: [ARAnchor]) {
        
        for anchor in anchors{
            if let bodyAnchor = anchor as? ARBodyAnchor{
                if let skeleton = bodySkeleton{
                    skeleton.update(with: bodyAnchor)
                    var 
                }
                else{
                    let skeleton = BodySkeleton(for: bodyAnchor)
                    bodySkeleton = skeleton
                    bodySkeletonAnchor.addChild(skeleton)
                }
                var Val:String = calcAngle(anchor: bodyAnchor) //Function that returns Joint Angles and lengths
            }
        }
    }
}

内容视图:



struct ArView: View {
    
    @ObservedObject var forGlobalValue: globalDataTransfer = globalDataTransfer(any: "No Value")

    var body: some View{
        ZStack{
            ARViewContainer()
            VStack{
                Text(forGlobalValue.val)
                Text("  This is \(test(any: forGlobalValue))")
            }
        }
    }
}

谁能告诉我如何将这个 Observable 对象传递给 ARView,或者有什么方法可以从 ARView 扩展中获取 Val 变量并在我的 View Text 上定期更新它。

4

0 回答 0