Swift MetalKit未知返回类型MTKMesh.newmesh
到目前为止,我一直在遵循一个教程(大约在《金属1》时代发布)来学习金属。我没有遇到任何错误,直到现在我才发现。我正在尝试执行此代码Swift MetalKit未知返回类型MTKMesh.newmesh,swift,assets,metal,metalkit,Swift,Assets,Metal,Metalkit,到目前为止,我一直在遵循一个教程(大约在《金属1》时代发布)来学习金属。我没有遇到任何错误,直到现在我才发现。我正在尝试执行此代码 var meshes: [AnyObject]? //code let device = MTLDevice() //device is fine let asset = MDLAsset() //asset works fine do{ meshes = try MTKMesh.newMeshes(asset: asset, device: device)
var meshes: [AnyObject]?
//code
let device = MTLDevice() //device is fine
let asset = MDLAsset() //asset works fine
do{
meshes = try MTKMesh.newMeshes(asset: asset, device: device)
} catch //...
我得到的错误是无法将类型为“(modellomesh:[MDLMesh],metalkitmesh:[MTKMesh])的值赋给类型“[AnyObject]”?“
MTKMesh.newmesh的类型是什么,如何将其存储在变量中?我试着把它铸造成![AnyObject],但是xcode告诉我每次转换都会失败。正如函数签名和编译器错误清楚显示的那样,返回类型是
(modelIOMeshes:[MDLMesh],metalkitemesh:[MTKMesh])
,因此您应该相应地声明meshas
:
var meshes: (modelIOMeshes: [MDLMesh], metalKitMeshes: [MTKMesh])?
该类型是一个命名的元组,包含两个
Array
s,分别包含MDLMesh
和MTKMesh
实例。该方法的返回类型是([MDLMesh],[MTKMesh])
,元组由MTLMesh
的数组和MTKMesh
的数组组成。原因是,除了为您创建的MTKMesh
对象之外,您可能还希望资产中包含MDLMesh
对象的原始集合
因此,您可以这样声明网格
:
var meshes: ([MDLMesh], [MTKMesh])
或者,如果您不关心原始的MDLMesh
es,您可以“分解”元组,将您关心的部分转换为[MTKMesh]
类型的变量:
var meshes: [MTKMesh]
(_, meshes) = try MTKMesh.newMeshes(asset: asset, device: device)
对不起,我想我没有很好地表达我的误解。我看到了返回类型,只是不确定返回类型是什么。对我来说,它看起来像一个函数的参数,你能解释一下它的类型吗?@GabeSpound该类型是一个命名元组,包含两个
Array
s,分别包含MDLMesh
和MTKMesh
实例。