我正在为我的一个孩子写一个相当简单的数学益智游戏。
我使用标准的XCode SpriteKit游戏模板,该模板使用SKScene和ViewController.m以及MyScene.m文件创建SKView。
然后我添加了一个简单的UIView作为带有UIButtons的NumberPad 0-9的容器。
我很想将MyScene.m作为IBActions的目标,因为它将使用按下按钮时的状态变化。
但是我想知道哪个类是IBActions ViewController或MyScene的更好目标。特别是对这两种选择都有任何性能影响。
我主要关注的是一些关于人们在混合SpriteKit和UIKit时遇到的问题的文章。
答案 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];
}
到目前为止,一切都在表现。