swift - 如何在 SceneKit 中播放音乐
问题描述
我试图在我的 SceneKit 游戏中播放音乐,但它无缘无故地崩溃了。所以我尝试在标准的 Apple 游戏模板中添加这 3 行代码(在 viewDidLoad 的末尾):
let music = SCNAudioSource(fileNamed: "Music.mp3")
let action = SCNAction.playAudio(music!, waitForCompletion: false)
ship.runAction(action)
并且,在运行时,Xcode 向我显示这条消息:com.apple.scenekit.scnview-renderer (8): breakpoint 1.2
我的错误在哪里?
我试图在两台不同的 Mac 上编译和运行我的代码:在我的 MacBookPro Retina 上它运行正常,在我的 iMac 21,5 上它崩溃了。所以,我的代码是正确的,可能我会向 Apple 填充雷达。请注意,两台 Mac 都安装了测试版(相同版本)的 OS Mojave,并且使用的 Xcode 也是测试版。
解决方案
您必须将音频文件放入 SCNAssets 目录(扩展名为 .scnassets),就像模板中的 art.scnassets 目录一样。然后像这样播放音乐:
if let source = SCNAudioSource(fileNamed: "art.scnassets/Music.mp3") {
let action = SCNAction.playAudio(source, waitForCompletion: false)
ship.runAction(action)
} else {
print("cannot find file")
}
推荐阅读
- javascript - 如何将请求实例默认代理设置为函数
- angular - Angular 服务私有字段是否安全?
- scala - 如何在scala中减去两个向量?
- azure - 同一 Azure 应用服务环境中的两个 Web 应用之间的连接
- javascript - 如何使用 @nuxtjs/auth-module 持久化基于 cookie 的会话?
- java - 将唯一 ID 设置为存储上的文件
- c# - MouseDown 事件处理程序似乎阻止调用 Click 事件处理程序
- javascript - 将 Node.js 数组从端点传递到 Javascript 函数
- c++ - SFML loadFromFile 不起作用,奇怪的错误
- javascript - ImageData 不可用时如何提供正确的数据?