我的问题是:项目应该如何设置?每个屏幕(级别选择,主菜单,选项)应该是自己的场景,还有一个主视图控制器?或者我应该有多个视图控制器的一切?或者也可能是由故事板中的NavigationController控制的每个级别的视图控制器(尽管并不太过分)
在玩了一下并在线阅读后,我注意到我可以使用视图控制器来为我的主菜单设置UIButtons.但是,他们坚持通过精灵套件的场景变化,这不是我想要的.这意味着我必须设置按钮隐藏在显示的每个新场景上,这让我很担心,因为我不确定按钮的确发生了什么.我知道可以从SKSpriteNodes创建按钮(类似于Graf已经发布的类,许多人已经使用过).那是更好的选择吗?而不是在VC上使用UIButton,我会检查在touchBegan方法和touchesEnded方法中是否触发了该按钮节点,如下所示:
UITouch *touch = [touches anyObject]; CGPoint location = [touch locationInNode:self]; SKNode *node = [self nodeAtPoint:location]; if ([node.name isEqualToString:@"scene button"]) { LevelScene *scene = [LevelScene sceneWithSize:self.view.bounds.size]; scene.scaleMode = SKSceneScaleModeAspectFill; [self.view presentScene:scene]; }
这是处理它的正确方法吗?
最终,我想要添加暂停屏幕,屏幕游戏等,并且不确定是否只是交换场景就足够了.此外,我可以从.plist文件加载它们,而不是为每个级别单独实现
我也在考虑一下我是否能够为按钮设置动画效果的事实.我想我希望他们在选择时浮动或变大(当用户触摸它但不放开时),我相信UIButton不会允许它,因为它不是一个SKSpriteNode.
对不起这么长的职位,但希望能提供足够的信息来帮助我,让我在正确的轨道上!谢谢!
解决方法
假设您想要创建一个具有CoverFlow效果的级别选择菜单,这将很难在SpriteKit上从头开始实现,但是对于UIKit,您可以轻松实现令人惊叹的CoverFlow和滚动效果的图标,如iCarousel.
SKLabelNode暂时只支持一个文本行,所以如果你想在你的游戏中添加一个很长的消息,这将是困难的,但是如果你使用UIKit,你可以使用UITextView来显示你的长消息.
详细的“应用程序采购”菜单将更容易使用UIKit创建.
UIKit会避免你很多头痛,我真的鼓励你使用它.
how should the project be set up?
你只需要1场景
MenuViewController->(Push Segue) – > LevelSelectionController->(Push Segue) – > GameScene
I suppose I’d want them to float around or get bigger when selected (when the user has touched it but not let go),and I believe that a UIButton would not allow it since it isn’t an SKSpriteNode.
您可以使用UIView animateWithDuration或CABasicAnimation为UIButton添加动画
That would mean that I would have to set buttons to be hidden on every new scene displayed
- (void)setHidden:(BOOL)hide { UIButton *tmpButton = (UIButton *)[self.view viewWithTag:100]; tmpButton.hidden = hide ? YES : NO; }
像这样隐藏
[self setHidden:YES];
希望它有帮助
祝你好运!