【发布时间】:2020-07-28 12:25:16
【问题描述】:
我可以使用 RealityKit 的 load(contentsOf: withName: inputMode: loadingStrategy: shouldLoop:) 类型方法轻松加载 .mp3 和 .aiff 音频文件。
static func load(contentsOf url: URL,
withName resourceName: String? = nil,
inputMode: AudioResource.InputMode = .spatial,
loadingStrategy: AudioFileResource.LoadingStrategy = .preload,
shouldLoop: Bool = false) throws -> AudioFileResource
这是带有Bundle.main.url() 方法的代码:
Bundle.main.url() 适用于 load(contentsOf:)。
import RealityKit
import ARKit
class ViewController: UIViewController {
@IBOutlet var arView: ARView!
let entity = Entity()
let anchor = AnchorEntity()
var audioController: AudioPlaybackController? = nil
override func viewDidLoad() {
super.viewDidLoad()
self.loadAudio()
}
}
extension ViewController {
fileprivate func loadAudio() {
let audioURL: URL = Bundle.main.url(forResource: "MonoAudio",
withExtension: "mp3")!
do {
let audioResource = try AudioFileResource.load(contentsOf: audioURL)
self.audioController = entity.prepareAudio(audioResource)
self.audioController?.fade(to: .infinity, duration: 5)
self.audioController?.speed = 2.0
self.audioController?.gain = 30
self.audioController?.play()
} catch {
print("Get Error while loading audio file...")
}
self.anchor.addChild(entity)
self.arView.scene.anchors.append(anchor)
}
}
但我无法使用load(named: in: inputMode: loadingStrategy: shouldLoop:) 类型的方法加载音频文件。
static func load(named name: String,
in bundle: Bundle? = nil,
inputMode: AudioResource.InputMode = .spatial,
loadingStrategy: AudioFileResource.LoadingStrategy = .preload,
shouldLoop: Bool = false) throws -> AudioFileResource
这是一个带有Bundle.main.path() 方法的代码:
Bundle.main.path() 不适用于负载(命名:)。
extension ViewController {
fileprivate func loadAudio() {
let audioPath: String = Bundle.main.path(forResource: "MonoAudio",
ofType: "mp3")!
do {
let audioResource = try AudioFileResource.load(named: audioPath)
self.audioController = entity.prepareAudio(audioResource)
self.audioController?.fade(to: .infinity, duration: 5)
self.audioController?.speed = 2.0
self.audioController?.gain = 30
self.audioController?.play()
} catch {
print("Get Error while loading audio file...")
}
self.anchor.addChild(entity)
self.arView.scene.anchors.append(anchor)
}
}
我错过了什么?我该怎么做?
【问题讨论】:
标签: swift augmented-reality arkit realitykit