2015-03-13 44 views
0

每当我将任何SKScene.sks文件导入到我的SKScene控制器时,它会产生一个词法/预处理器问题。我试过创建多个不同的SKScene.sks文件和多个SKScene控制器。导入SKScene导致词法/预处理器问题

举例来说,在我的Level1.mm文件(我也试图与.M的,同样的事情发生):

#import "Level1.h" 
#import "SceneOne.sks" 

是所有需要打破游戏。任何帮助,将不胜感激!

回答

0

#import指令是一个预处理指令,用于处理该指令后面的文件内容,就好像它与包含它的*.m文件的其余部分一样存在于同一文件中。通常,您正在导入头文件以访问调用类中定义的方法。当你编译你的代码时,编译器会将你的代码看作是你导入的文件中的代码实际上是在同一个文件中。

你得到一个词法错误的原因是,通过导入一个.sks文件,你将在源代码中插入该文件的内容(从字面上插入它,而不是链接到它)。编译器试图读取Objective-C,但您提供给它的第一件事是.sks文件的错误块(实际上它是一个二进制文件),编译器不知道如何读取它。

你需要实际加载在你的代码文件和取消归档这个二进制对象转化为具体的类 - 是这样的:

NSString *scenePath = [[NSBundle mainBundle] pathForResource:@"MyScene" ofType:@"sks"]; 
SKScene *scene = [NSKeyedUnarchiver unarchiveObjectWithFile:scenePath];