将UITextView添加到SpriteKit中的场景

时间:2014-03-09 19:31:17

标签: ios uitextview sprite-kit skscene skview

我试图创建一个游戏,并遵循Apple的建议,我正在使用多个场景。 您可以将游戏视为文本重点并单击冒险。

存在问题。很多文本,做了一些搜索,似乎是推荐的方式,或者说当前唯一的方法是使用UITextView因此:

[self.view addSubview: textView];

如果你只有一个SKScene,这就好了,因为那是当前视图/ SKView显示的场景。

我的问题是,当我将文本添加到我的场景的*视图中时,该视图不是应用程序加载的第一个场景(第三个或更高版本),应用程序会跳回到它加载的第一个场景(是我的菜单场景)并愉快地显示所需的文本。

有人知道为什么吗?我有菜单场景转换到场景一,到场景二(我希望显示测试)。

请不要说每个场景需要一个视图,如果我想在每个场景中显示多个单词,那真的没有意义,但也许我对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];
}

其中GTMainMenuSKScene的子类,并且有一个按钮(橙色框)到“act”(GTScene的子类,它本身是{{1}的子类}),这将导致转换到act,它有第一个场景的另一个按钮。 只有你永远不会进入现场,因为SKScene会让你回到主菜单。

这是场景的viewDidLoad,会导致它“跳转”回主菜单:

viewDidLoad

有一个git repo here

这是我项目的条纹版本,删除了与手头问题无关的所有内容。

如果您原谅代码,那么我的日常工作就是Java,而目前我正在努力解决Objective C中的某些概念。 哦,对不起,我设法包括用户设置:S

2 个答案:

答案 0 :(得分:1)

您的视图控制器的viewWillLayoutSubviews方法无法防止重复执行。此方法不仅会在应用启动时运行,而且每次视图旋转并调整大小时都会运行。

在使用该方法创建/呈现场景之前添加一个检查:

if(self.view.scene == nil) { /* present scene */ }

答案 1 :(得分:1)

你有没有看过SKLabelNode?我在SpriteKit游戏中广泛使用它。如果你需要你的SKLabelNode做任何花哨的东西(物理等),你可以把它添加到父SKSpriteNode。