Ios Swift 4.2-Cocoapods:在资源包中添加和访问SCNASSET

Ios Swift 4.2-Cocoapods:在资源包中添加和访问SCNASSET,ios,swift,cocoapods,scenekit,Ios,Swift,Cocoapods,Scenekit,试图创建使用.scnassets文件夹的cocoapod。文件夹被导入到资源中,子对象没有任何问题,但我找不到方法将.dae文件加载到SCNScene中。据我所知,XCode如何将.dae转换为.scn资产可能存在问题 .podspec包括: s.resource_bundles = { 'ARUtilsScenes' => ['ARUtils/Assets/ARScenes.scnassets'] } s.resource_bundles = { 'A

试图创建使用
.scnassets
文件夹的cocoapod。文件夹被导入到
资源中
,子对象没有任何问题,但我找不到方法将.dae文件加载到
SCNScene
中。据我所知,XCode如何将.dae转换为.scn资产可能存在问题

.podspec包括:

  s.resource_bundles = {
      'ARUtilsScenes' => ['ARUtils/Assets/ARScenes.scnassets']
   }
s.resource_bundles = {
      'ARUtilsScenes' => ['ARUtils/Assets/ARScenes.scnassets']
   }
ARScenes.scnassets正确加载到
Resources
文件夹中。我正在尝试在我的Pod中加载场景(在Pod中,而不是使用Pod的项目中,并且尝试了多种方法):

让arrowsecene=SCNScene(名为:“arrow.dae”)

let arrowsecene=SCNScene(名为:“Resources/ARScenes.scnassets/arrow.dae”)

让arrowsecene=SCNScene(名为:“arrow.dae”,目录:“Resources/ARScenes.scnassets”,选项:nil)


我尝试了各种文件/文件夹名称,能够加载图像,但无法将.dae加载为
SCNScene
。我是否需要将.xib文件添加到我的资源包中,或者是否有其他方法来确保.scnassets文件夹将这些.dae正确编译到.scn,并使它们可以加载到
SCNScene

从.scnassets文件夹访问.dae资产时,不需要在路径中包含“Resources/”

例如:
let arrowsecene=SCNScene(名为:“ARScenes.scnassets/arrow.dae”)


假设您的.scnassets文件夹被称为该文件夹。

苹果公司在更新的构建系统中引入了一个已知的bug,该bug导致资产目录的异步编译,使它们在最终构建中不可访问。有关参考信息,请参阅Cocoapods GitHub。这里列出了几种解决方法,但没有一种能保证结果,所以现在我们似乎不得不接受它,假设
ZARKit
是您在CocoaPods中发布的框架

.podspec
包括:

  s.resource_bundles = {
      'ARUtilsScenes' => ['ARUtils/Assets/ARScenes.scnassets']
   }
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)

这对于普通的scenekit包是正确的,但这对于Cocoa Pod来说是正确的,它在XCode的构建时间之前捆绑了这些项。我尝试了各种途径,在我的主要项目中效果很好,但我需要将此资产包括在Cocoa Pod中。哦,当然,我误读了-这个答案应该是您正在寻找的。基本上,在你的Pod中找到你的任何类的捆绑包-然后为资源创建捆绑包URL(你在podspec中定义的)-并在请求资源时使用该捆绑包,使用我上面提到的格式。我希望这能奏效,但它只适用于图像(在那里的问题中提到,我得到的是用于图像的,但不是用于.dae或.scn)。感谢您对此进行研究。这与我猜测的bundles如何设置场景有关,因为您不能直接使用
SCNScene
(类似于在该问题中使用
UIImage
的方式)有可能在某个地方共享你的播客吗?其他人在相同的场景中更容易尝试。我会看看我能做些什么(可能要到周末才能拿到),但总体思路是在
资源包
项的CocoaPod中使用
SCNScene
。类似于通过针对包导入
UIImage
的方式:stackoverflow.com/a/35903720/856336,但使用
SCNScene
(没有包属性,只有目录属性)感谢您提供的信息,我以前没有看到过这个。这个问题是关于
资源
的,而不是
资源包
(它的实现是为了添加预编译包并将它们作为目标,如果我读过正确的文档的话)。我肯定会研究前面提到的遗留模式,并向您介绍这方面的最新情况。