如何在SwiftUI中从ARView扩展更新可观察对象?

问题描述

我正在尝试从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变量并在我的查看文本中定期对其进行更新。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)