swift - 接收有关 Reality Composer 动画结束的 Xcode 通知

标签 swift xcode realitykit reality-composer

我有以下可以正确加载的 Reality Composer 项目。正如您所看到的,当动画完成时,它应该使用关键字“attackComplete”进行通知。

我如何收到此通知?

enter image description here

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 的通知,您可以实现两种场景:

Action 监听器

这是您的案例,使用它很容易实现

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)
    }
}

enter image description here

这里还有一个 example如何使用 .onAction 完成处理程序


触发操作

当您需要通知 Reality Composer 的场景播放 Action 时,请使用以下场景:

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()
}

enter image description here

这里还有一个示例 .post()可以使用实例方法

P。 S.

如果您需要更多信息,请阅读 this post .

关于swift - 接收有关 Reality Composer 动画结束的 Xcode 通知,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71115018/

相关文章:

ios - 在 iOS 的多个地方使用响应

iphone - 返回主视图 Controller ?

iphone - NSDictionary 可能无法响应 setObject :forKey on a NSMutableDictionary object

iphone - 找不到基于导航 Controller 的应用程序的 Xcode 4 新项目模板。还有其他选择吗?

swift - 如何在 RealityKit 中使用 Raycast 方法?

ios - 重置自定义表格单元格中所有 UITextfield 的值

ios - 我的 TableViewController 中的filteredUsers 的数据源应该是什么?

xcode - 由于 NSPOSIXErrorDomain 错误,无法在 iOS 模拟器上运行应用程序

swift - RealityKit - 错误的 ModelEntity 位置

swift - RealityKit 和 ARKit – 当应用程序启动时,AR 项目在寻找什么?