【发布时间】:2014-04-12 18:43:30
【问题描述】:
我尝试创建游戏,并按照 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 可用here。
这是我项目的精简版,删除了与手头问题无关的所有内容。
请原谅我的代码,我的日常工作是 Java,目前我正在努力解决 Objective C 中的某些概念。 哦,对不起,我设法包含了用户设置:S
【问题讨论】:
-
感谢您的编辑。我不确定这是 iOS 特定的,尽管“游戏”是一款 iOS 游戏。我认为 OSX 上也可能存在这个“问题”。
-
好的;我明白了,人们遵循标签。 :D
-
这种突然的“跳回前一个场景”强烈表明您的编程错误,但您没有提供任何您编写的上下文相关代码,因此我们无法制作任何建议。
-
添加代码示例,并链接到 git repo
标签: ios uitextview sprite-kit skscene skview