繁体   English   中英

将UITextView添加到SpriteKit中的场景

[英]Adding UITextView to a scene in SpriteKit

我试图创建一个游戏,并且按照苹果公司的建议,我正在使用多个场景。 您可以将游戏视为文字重点,然后单击冒险。

问题就出在这里。 经过大量搜索后,似乎有很多文本值得推荐,或者目前唯一的方法是使用UITextView

[self.view addSubview: textView];

如果只有一个SKScene ,那么这一切都很好,因为这是当前视图/ SKView显示的场景。

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

有人知道为什么吗? 我有菜单场景过渡到场景一,到场景二(我希望在其中显示测试)。

如果我想在每个场景中显示多个单词,请不要说每个场景都需要一个视图,这实际上没有任何意义,但是SpriteKit的使用可能也没有意义。

我仍然有些惊讶,没有与UITextView等效的SK。

无论如何,任何帮助,指针都会很棒,谢谢。

好的,这是代码的相关部分。...我认为。 控制器:

- (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];
}

有一个混帐回购协议可在这里

这是我项目的精简版,删除了与当前问题无关的所有内容。

如果您会原谅代码,那么我的日常工作是Java,并且我现在正在为Objective C中的某些概念苦苦挣扎。 哦,很抱歉,我设法包括了usersettings:S

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

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

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

您是否看过SKLabelNode 我在SpriteKit游戏中广泛使用了它。 如果您需要SKLabelNode做任何奇特的事情(物理等),则可以将其添加到父SKSpriteNode。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM