我应该使用 UIView 和 UILabel 在 SKView 上显示游戏详细信息吗

Posted

技术标签:

【中文标题】我应该使用 UIView 和 UILabel 在 SKView 上显示游戏详细信息吗【英文标题】:Should I use UIView's and UILabels to display Game details on top of SKView 【发布时间】:2016-02-13 22:40:56 【问题描述】:

我是游戏开发的新手,想知道在屏幕上显示游戏数据的最佳方法是什么。

我有一个无尽的跑步者,精灵在其中收集宝石,我希望将总数显示在屏幕上。我正在考虑在 SKView 上方放置一个带有 UILabel 的 UIView,并在每次触摸后更新标签。 我还希望最后出现一个游戏结束屏幕,并且还在考虑使用 UIView 创建它。

这是最好的方法还是应该将所有数据保存在 SKView 本身中?

希望这是有道理的。

【问题讨论】:

如果你使用精灵套件,最好使用精灵套件元素。使用 SKLabelNode 显示分数 【参考方案1】:

虽然我不认为在 SpriteKit 应用程序中使用 UIKit 组件有什么问题,但我还是建议尽可能使用 SpriteKit 自己的组件。

对于文本,我建议使用 SKLabelNode 而不是 UILabel。

另外,对于按钮和其他 GUI 元素,我认为 SKSpriteNodes 就足够了。

简单的功能按钮示例:

SKSpriteNode *fireNode = [SKSpriteNode spriteNodeWithImageNamed:@"fireButton.png"];
fireNode.position = CGPointMake(fireButtonX,fireButtonY);
fireNode.name = @"fireButtonNode";//how the node is identified later

手柄触摸:

//handle touch events
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event

    UITouch *touch = [touches anyObject];
    CGPoint location = [touch locationInNode:self];
    SKNode *node = [self nodeAtPoint:location];

    //if fire button touched, bring the rain
    if ([node.name isEqualToString:@"fireButtonNode"]) 
         //do whatever...
    

【讨论】:

以上是关于我应该使用 UIView 和 UILabel 在 SKView 上显示游戏详细信息吗的主要内容,如果未能解决你的问题,请参考以下文章

如何将 UILabel 和 UIButton 项都放入 UITableView 标题部分的 UIView

在 UIView 的中心添加 UILabel

使用 UILabel iOS 自定义 UIView

如何调整 UIView 的大小以获取大量 UILabel 并调整 UILabel 的大小以适合文本?

UIView 不根据子视图调整宽度?

使用 UIView 动画时处理、删除和添加 UILabel