如何使用字符串作为 SKScene 的名称

亚历克斯梅林

我正在制作具有 24 个级别的游戏,并且我使用 NSUserDefaults 通过将其值设置为级别编号来让我知道我处于哪个级别。

我正在尝试获取 NSUserDefault 值并将其设置为字符串,以便当我呈现场景时它会知道要进入哪个级别。但由于某种原因它不起作用。它说我无法将字符串转换为 SKScene。

用户默认保存数字级别(1、2、3 等)。有了这个数字,我想去那个场景,它被命名为(Level1、Level2 等)。我试图将数字附加到字符串“Level%i”上,然后使用该字符串呈现场景。但它并没有让我说不能将字符串转换为 SKScene。

这是用于呈现关卡场景的代码:

if self.atPoint(location) == NextLevelButton{

        let LevelSelection = UserDefaults.standard.object(forKey: "LevelSelection") //as? String




        let level2 = NSString(format: "Level%@", LevelSelection! as! SKScene) // Here is where I try to make a string and convert it into a SKScene

        removeAllActions()
        removeAllChildren()
        let scene = level2 (size: self.size) // I get an error here   "Cannot call value of non-function type 'NSString'"
        let sKView = self.view! as SKView
        sKView.ignoresSiblingOrder = true
        scene.scaleMode = .aspectFill

        sKView.presentScene(scene)

下面是Level1场景中的另一部分代码:

let defaultLevel = 1
UserDefaults.standard.set(defaultLevel, forKey: "LevelSelection")

场景的名称是 Level1、Level2 等。我只需要将 NSUserDefualt 变量的编号附加到字符串“Level”中,我就拥有了场景

有谁知道我做错了什么?如果这不是正确的方法,那是什么?

先感谢您 !

瓦迪安

你不能那样做。字符串不能转换为对象。

一个可能的解决方案是一个数组:

let levels : [SKScene] = [level1, level2, level3]

然后你可以通过索引检索级别

let levelSelection = UserDefaults.standard.integer(forKey: "LevelSelection")
let scene = levels[levelSelection - 1]

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

使用字段名称作为字符串调用OrderBy()

在Angular 2+和Typescript中使用字符串作为变量名称

如何在接口中使用字符串枚举类型作为计算的属性名称?

在C#中使用字符串作为类属性的名称

如何使用字符串作为整数名称?C ++

使用字符串构造定义名称

如何使用字符串的值作为对象名称

VueJS:使用字符串设置变量名称

如何使用字符串设置变量名称

在<svelte:component>中使用字符串作为组件名称

如何使用字符串的值作为对象的名称?

如何使用作为字典名称的输入字符串引用字典

如何使用字符串访问Python字典名称?

使用字符串作为属性名称

使用字符串作为类关联名称Rails

使用字符串作为名称创建对象

在PHP中使用字符串作为对象名称

如何在python中使用字符串作为数组的名称,以便可以在for循环中使用

如何使用字符串作为动态参数名称

在视图中使用字符串作为范围属性名称的角度

Python - 使用字符串数组,将它们作为函数的数据帧名称的输入传递

Revit API:使用字符串作为当前路径的按钮程序集名称

如何使用字符串的值作为对象名称?

如何在 JAVA 中使用字符串变量作为对象名称?

在函数中使用字符串作为参数名称?

使用字符串作为参数名称

在树枝中使用字符串变量作为对象名称

使用字符串作为 numpy 数组的名称

Angular 使用字符串作为插座名称