[英]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.