You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SpriteKit游戏中分数每递增时,如何从数组取值设置SKLabelNode?

简洁解决SpriteKit中score对应数组元素设置文本的问题

嘿,我太懂你写一堆重复if-else的痛苦了!完全没必要这么折腾,利用数组的索引特性就能一步搞定,代码瞬间清爽很多。

核心思路

你的score是从1开始递增的,而数组的索引是从0开始的——刚好score - 1就对应了数组里的目标元素位置。比如score=1对应数组第0个元素"English",score=2对应第1个元素"Maths",完美匹配你的需求。

Swift实现代码

// 定义你的目标数组(后续扩展到42个元素也不用改逻辑)
let passed2 = ["English", "Maths", "Physics", "Chemistry"]

// 当score递增后,直接设置文本
if score >= 1 && score <= passed2.count {
    passed.text = passed2[score - 1]
} else {
    // 可选:处理score超出数组范围的情况,比如全部完成后的提示
    passed.text = "All subjects passed!"
}

如果你用的是Objective-C

NSArray *passed2 = @[@"English", @"Maths", @"Physics", @"Chemistry"];

if (score >= 1 && score <= passed2.count) {
    passed.text = passed2[score - 1];
} else {
    passed.text = @"All subjects passed!";
}

为什么这更好?

  • 简洁性:不管数组后续扩展到42个还是更多元素,都不需要新增任何条件判断,只需要维护passed2数组就行。
  • 安全性:加了score的范围判断,能避免数组越界导致的崩溃(比如score超过当前数组元素数量时,会触发else分支的兜底处理)。
  • 可维护性:后续要修改顺序或者新增元素,直接改数组就好,不用在一堆if-else里找对应逻辑。

内容的提问来源于stack exchange,提问作者Naveen Saini

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 03:24:09