我试图创建一个游戏,并按照 Apple 的建议使用多个场景。您可以将游戏视为文本重点和点击冒险。
问题就在于此。大量文本,经过一番搜索,似乎是推荐的方式,或者说目前唯一的方法是UITextView
这样:
[self.view addSubview: textView];
如果您只有一个,这一切都很好SKScene
,因为那是当前视图/SKView 正在显示的场景。
我的问题是,当我将文本添加到场景的 *view 中时,这不是应用程序加载的第一个场景(第三个或更高),应用程序跳回到它加载的第一个场景(这是我的菜单场景)并愉快地显示所需的文本。
有人知道为什么吗?我有菜单场景过渡到场景一,场景二(我希望在其中显示测试)。
如果我想在每个场景中显示多个单词,请不要说我需要每个场景的视图,这真的没有意义,但也许我对 SpriteKit 的使用也没有。
我还是有些惊呆了,居然没有SK等效的UITextView
。
无论如何,任何帮助,指针都会很棒,谢谢。
好的,这是代码的相关部分....我想。控制器:
- (void)viewWillLayoutSubviews
{
[super viewWillLayoutSubviews];
// Configure the view.
SKView *skView = (SKView *)self.view;
skView.showsFPS = YES;
skView.showsNodeCount = YES;
skView.showsDrawCount = YES;
// Create and configure the scene.
SKScene *scene = [[GTMainMenu alloc] initWithSize:skView.bounds.size];
// Present the scene.
[skView presentScene:scene];
}
其中GTMainMenu
是 的子类SKScene
,并且有一个按钮(橙色框)到“动作”( 的子类GTScene
,本身是 的子类SKScene
),这将导致到动作的转换,该动作有另一个按钮到第一个场景。只有您永远不会到达现场,因为viewDidLoad
您会返回主菜单。
这是场景的 viewDidLoad,这将导致它“跳”回主菜单:
- (void)didMoveToView:(SKView *)view
{
[super didMoveToView:view];
if (!self.contentCreated) {
[self createSceneContents];
self.contentCreated = YES;
}
UITextView *textView = [[UITextView alloc] initWithFrame:CGRectMake(self.size.width/2, self.size.height/2+20, 200, 40)];
textView.center = self.view.center;
textView.textColor = [UIColor blackColor];
textView.font = [UIFont systemFontOfSize:17.0];
textView.backgroundColor = [UIColor whiteColor];
textView.text = @"Where am I?";
[self.view addSubview:textView];
}
这里有一个 git repo 可用。
这是我项目的精简版本,删除了与手头问题无关的所有内容。
请原谅我的代码,我的日常工作是 Java,而我目前正在努力处理 Objective C 中的某些概念。哦,对不起,我设法包含了用户设置:S