iOS混合Spritekit和UIKit

时间:2014-03-10 22:34:19

标签: ios uikit sprite-kit

我正在为我的一个孩子写一个相当简单的数学益智游戏。

我使用标准的XCode SpriteKit游戏模板,该模板使用SKScene和ViewController.m以及MyScene.m文件创建SKView。

然后我添加了一个简单的UIView作为带有UIButtons的NumberPad 0-9的容器。

我很想将MyScene.m作为IBActions的目标,因为它将使用按下按钮时的状态变化。

但是我想知道哪个类是IBActions ViewController或MyScene的更好目标。特别是对这两种选择都有任何性能影响。

我主要关注的是一些关于人们在混合SpriteKit和UIKit时遇到的问题的文章。

2 个答案:

答案 0 :(得分:1)

出于您的目的,性能影响完全可以忽略不计。但是从代码的角度来看,我可能会以viewcontroller为目标,以防你想换掉场景但重用你的数字键盘。对于数学类型的游戏来说,这似乎是未来可能的发展。

答案 1 :(得分:0)

我带了Theis'建议,所以我的视图控制器,它创建场景,包含以下代码。

<强> ViewController.m

- (IBAction)numberPressed:(id)sender {
    UIButton *pressedButton = (UIButton*) sender;
    NSString *button = pressedButton.currentTitle;
    [scene.keysPressed addObject:button];
}

- (IBAction)clearPressed:(id)sender {
    UIButton *pressedButton = (UIButton*) sender;
    NSString *button = pressedButton.currentTitle;
    [scene.keysPressed addObject:button];
}

然后在我的场景代码中我声明了keysPressed属性,有点偏执我已经使它成为原子,以防视图控制器和场景在不同的线程中运行。

<强> MyScene.h

@property (strong, atomic) NSMutableArray *keysPressed;

然后在场景更新方法中,我只是检查可变数组,我使用堆栈来查看已添加的任何内容并获取其值并将其删除。

<强> MyScene.m

-(void)update:(CFTimeInterval)currentTime {
...
NSString *keyNum = nil;
if([_keysPressed count] > 0) {
    keyNum = [_keysPressed firstObject];
    [_keysPressed removeObjectAtIndex:0];
}

到目前为止,一切都在表现。