ios - Swift 4.2 - Cocoapods:在 resource_bundles 中添加和访问 scnassets
问题描述
尝试创建一个使用.scnassets
文件夹的 cocoapod。将文件夹导入到Resources
子对象中没有任何问题,但我找不到将.dae文件加载到SCNScene
. 据我了解,XCode 如何将.dae转换为.scn资产可能存在问题。
.podspec包括:
s.resource_bundles = {
'ARUtilsScenes' => ['ARUtils/Assets/ARScenes.scnassets']
}
正确加载ARScenes.scnassets到Resources
文件夹中。我正在尝试在我的 Pod 内加载场景(在 Pod 内,而不是使用 Pod 的项目,并尝试了多种方法):
let arrowScene = SCNScene(named: "arrow.dae")
let arrowScene = SCNScene(named: "Resources/ARScenes.scnassets/arrow.dae")
let arrowScene = SCNScene(named: "arrow.dae", inDirectory: "Resources/ARScenes.scnassets", options: nil)
我尝试了各种文件/文件夹名称,并且能够加载图像,但我无法将.dae加载为SCNScene
. 我是否需要将.xib文件添加到我的resource_bundles中,或者是否有其他方法可以确保.scnassets文件夹正确编译这些.dae正确编译为.scn并使其可用于加载到.scn 中SCNScene
?
解决方案
假设ZARKit
您的框架分布在 CocoaPods 中。
.podspec
包括:
s.resource_bundles = {
'ARUtilsScenes' => ['ARUtils/Assets/ARScenes.scnassets']
}
那么你应该这样做
let bundle = Bundle(for: #Your Class#.self).
let resourcePath = bundle.path(forResource: <#T##String?#>, ofType: <#T##String?#>)
let resourceBundle = Bundle(path: resourcePath)
let url = resourceBundle.url(forResource: "ARScenes.scnassets/<#YourResourceName-arrow#>", withExtension: "<#scn#>")
let arrowScene = SCNScene(url: url)
编辑:Z. Bagley
接受的答案,但这是我使用的实际代码:
// find bundle based on existing class in pod
let frameworkBundle = Bundle(for: ARUtilsClass.self) //ARUtilsClass is an empty class, Pod is only extensions for existing classes
// append the scenes bundle, scnassets, and scn/dae
let arrowURL = frameworkBundle.resourceURL?.appendingPathComponent("ARUtilsScenes.bundle/ARScenes.scnassets/newArrow.scn")
// create a node in parent
var arrow = SCNNode()
do {
// get arrow scene from bundle
let bundleArrowScene = try SCNScene(url: (arrowURL)!, options: nil)
// add arrow node from scene
arrow = bundleArrowScene.rootNode.childNode(withName: "arrow", recursively: true)!
} catch {
print("failed to find arrow resource")
}
推荐阅读
- python - 在循环python中将deltatime添加到每个日期
- go - 在没有泛型的情况下在 Golang 中重用类似的代码
- python - AttributeError:模块“tensorflow_core._api.v2.image”没有属性“resize_images”
- apache-camel - Apache Camel:创建多个路线是否成本高昂?
- ruby-on-rails - “错误”:“参数数量错误(给定 1,预期为 0)”
- kubernetes - Kubernetes 如何计算 HPA 的 CPU 利用率?
- c++ - 如何在通过`cin`从键盘提取的流中打印`[`和`,`和`]`
- python - 如何在熊猫中格式化分位数条形图的 x 刻度标签
- reactjs - ReactJS UseEffect 内存泄漏错误 - 是什么原因造成的?
- spring-boot - 有效负载格式 Apache CXF SOAP 消息