【问题标题】:Updating an Int variable in separate scenes in swift? Sprite Kit快速更新单独场景中的 Int 变量?雪碧套件
【发布时间】:2016-02-01 05:29:24
【问题描述】:

我正在尝试制作一款生存游戏,玩家必须在每个关卡中存活很长时间才能进入下一个关卡。但是,当我从一个级别转到另一个级别时,我无法弄清楚如何更新每个场景的分数。我了解如何添加和删除子视图,但这不是问题。问题是在不同场景中调用变量,并从新场景中更改该变量。我将在这里留下一些代码以供参考。提前谢谢你。

在Level1.swift中,

我声明分数 var:

var Score = Int()

然后我会在需要时添加它,并将其表示为标签。

Score++


ScoreLabel.text = "\(Score)"

然后在Level2.swift中

我再次声明变量

var ScoreLabel = UILabel()

并在需要时添加它...然而,唯一发生的事情是一个新标签出现并与已经显示的分数标签重叠...

Score++


ScoreLabel.text = "\(Score)"

我如何在swift中保持一个场景到另一个场景的跑分?

1.这是我声明变量的地方,我只在这个场景中这样做

2.这是我宣布场景变化的地方,我还没有,但这就是我打算如何改变每个场景

3.这是我添加标签子视图的地方,我在每个场景中都这样做

4.这是我添加到变量的地方,我在每个场景中都以这种方式调用它

【问题讨论】:

标签: ios swift sprite-kit int var


【解决方案1】:

UILabel 不是场景的一部分。它是容器视图的一个元素。因此它始终是可见的,并且超时创建一个新标签,它将显示在现有标签的顶部。

最简单的方法是使用全局变量。只需放置

var Score = Int()
var ScoreLabel = UILabel()

在类定义之外(并且只将它添加到容器视图中一次)。

另一种选择是使用 SKLabel 并将其添加到场景中。

此堆栈溢出问题与另一个问题有关,但显示了如何使用 SKLabel 获取评分信息的示例: score label display value overwrites

【讨论】:

  • 这个逻辑对我来说很有意义,但你在类定义之外是什么意思?你的意思是在类定义之前列出它?另外,你只将它添加到容器视图中是什么意思?我很抱歉,但如果你能帮我解决这个问题,那就太好了
  • 是的。在类定义之前声明它。
  • 应该只在一级申报一次吗?
  • 只添加一次到容器视图中意味着只在场景1中添加UILabel,不要再添加到其他场景中。
  • 啊,那么不要在其他任何场景中再次声明它?然后在其他场景中引用它
猜你喜欢
  • 2012-10-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多