两段Swift代码交互(Apple ARKit示例代码)

Interacting between two pieces of Swift code (Apple ARKit sample code)

Apple 已为 "Creating Face-Based AR Experiences" here 发布了一些示例代码。

我的问题涉及在两段代码之间传递变量。在 RobotHead.swift 中,我想检测 blendShapes 中的条件,并以某种方式将其传递回 ViewController.swift,以便 ViewController 中的代码可以对该条件做出反应。最简单的方法是什么?谢谢你。

您可以做的一件事是在您的 ViewController class 中创建一个 public 函数,将您的视图控制器传递给 VirualContentUpdater,然后从其调用该方法renderer(:didUpdate:for) 函数。

ViewController.swift中:

override func viewDidLoad() {
    contentUpdater.viewController = self
    /* ... */
}

public func update(withFaceAnchor anchor: ARFaceAnchor) {
    // do something with anchor.blendShapes
}

VirtualContentUpdater.swift

public var viewController: ViewController?
func renderer(_ renderer: SCNSceneRenderer, didUpdate node: SCNNode, for anchor: ARAnchor) {
    viewController?.update(withFaceAnchor: anchor)
    /* ... */
}