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
相关产品推荐
相关产品推荐

