我有以下可以正确加载的 Reality Composer 项目。正如您所看到的,当动画完成时,它应该使用关键字“attackComplete”进行通知。
我如何收到此通知?
import RealityKit
import ARKit
class ViewController: UIViewController, ARSessionDelegate {
@IBOutlet var arView: ARView!
override func viewDidLoad() {
super.viewDidLoad()
let boxAnchor = try! Experience.loadOrcAttack()
arView.session.delegate = self
arView.scene.anchors.append(boxAnchor)
print("done")
}
func session(_ session: ARSession, didUpdate anchors: [ARAnchor]) {
print(anchors)
}
}
通过 Reality Composer 的通知,您可以实现两种场景:
动作监听器
这是您的情况,使用它很容易实现
public var onAction: ((RealityKit.Entity?) -> Swift.Void)?
.
import UIKit
import RealityKit
class ViewController: UIViewController {
@IBOutlet var arView: ARView!
let scene = try! Experience.loadScene()
override func viewDidLoad() {
super.viewDidLoad()
arView.scene.anchors.append(scene)
scene.actions.attackCompleted.onAction = notificationID // listener
}
fileprivate func notificationID(_ entity: Entity?) {
print(scene.actions.attackCompleted.identifier)
}
}
这里还有一张example of how .onAction
完成处理程序可以使用。
触发行动
当您需要通知 Reality Composer 的场景播放动作时,请使用以下场景:
import UIKit
import RealityKit
class ViewController: UIViewController {
@IBOutlet var arView: ARView!
let scene = try! Experience.loadScene()
override func viewDidLoad() {
super.viewDidLoad()
arView.scene.anchors.append(scene)
}
@IBAction func press(_ sender: UIButton) {
scene.notifications.spinner.post() // trigger for action
}
}
或使用下标[NAME.NotificationTrigger]
:
@IBAction func press(_ sender: NSButton) {
scene.notifications.allNotifications[0].post()
}
这是另一个示例.post() 实例方法可以使用。
P. S.
如果您需要更多信息,请阅读这个帖子.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)