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
似乎很奇怪。这是为什么?
谢谢!
答案 0 :(得分:1)
你可以在Swift中使用SCNVector3Make(x, y, z)
和SCNVector3(x, y, z)
。
后者确实在语义上很奇怪,但它们相同。
答案 1 :(得分:1)
两者都相同,只有名称不同,都是因为Apple C / ObjC框架和Swift代码中的命名约定不同。
最好在示例中展示它是如何工作的:
假设我们正在创建框架SomeFramework
(SF
将是命名空间前缀)并且在所述框架中我们将具有类型Example
,其前缀为SFExample
C的命名约定表示我们的类型SFExample
的构造函数应该被称为SFExampleMake
。
Swift的命名约定说构造函数应该是SFExample.init
,可以称为SFExample(…)
。
当您在Swift项目中导入ObjC / C框架时,会在场景后面进行名称广播,将SFExampleMake
变为SFExample.init
或SCNVector3Make
变为SCNVector3.init
。