两段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)
/* ... */
}
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)
/* ... */
}