我正在制作一款有很多关卡的Swift游戏,每个关卡都在一个按顺序命名的文件中:
Level1.swift
Level2.swift
Level3.swift
...
每个文件都有一个单独的类,类名与文件名相同。
之所以所有东西都是类,是因为所有类都从基类继承了相似的功能,也因为有很多共享变量。
问题是,我不知道如何仅使用整数加载级别,而不进行这种灾难性的操作:
switch Int(level)! {
case 1:
newScene = Level1(size: frame.size)
case 2:
newScene = Level2(size: frame.size)
case 3:
newScene = Level3(size: frame.size)
...
因为我没有任何.sks文件,只有实际的类,所以我无法使用SKScene(fileNamed:)
。如果我可以像使用音频文件一样使用Bundle.main.url加载场景,那就太好了,但这是不可能的。我尝试使用协议和扩展来实现默认行为,但我仍然无法想到一个好的加载方式。欢迎提供任何帮助。