SceneKit:相当于Objective C中的SCNVector3(0,0,0)

时间:2017-09-08 09:46:18

标签: objective-c swift scenekit

Swift中此代码的等价物:

startNode.scale = SCNVector3(1/100.0, 1/100.0, 1/100.0)

是:

[startNode setScale: SCNVector3Make(1/100.0, 1/100.0, 1/100.0)];
在Objective-C中

SCNVector3替换为SCNVector3Make似乎很奇怪。这是为什么?

谢谢!

2 个答案:

答案 0 :(得分:1)

可以在Swift中使用SCNVector3Make(x, y, z)SCNVector3(x, y, z)

后者确实在语义上很奇怪,但它们相同

答案 1 :(得分:1)

两者都相同,只有名称不同,都是因为Apple C / ObjC框架和Swift代码中的命名约定不同。

最好在示例中展示它是如何工作的:

假设我们正在创建框架SomeFrameworkSF将是命名空间前缀)并且在所述框架中我们将具有类型Example,其前缀为SFExample

C的命名约定表示我们的类型SFExample的构造函数应该被称为SFExampleMake

Swift的命名约定说构造函数应该是SFExample.init,可以称为SFExample(…)

当您在Swift项目中导入ObjC / C框架时,会在场景后面进行名称广播,将SFExampleMake变为SFExample.initSCNVector3Make变为SCNVector3.init