选项
在本章中,您将会学习到:
- 如何为引擎添加速度选项
- 如何为引擎添加音符大小选项
速度
在节奏游戏中,最常使用的选项之一是可变的速度,其给予玩家快进/减慢关卡的能力来使得关卡更具挑战性/更容易练习。
让我们添加一个速度选项到我们的引擎设置中:
class Options {
public:
int speed = 0;
}Options;
auto options = defineOptions<class Options>({
{
name: NameText.NoteSpeed,
scope: Scope,
standard: true,
type: OptionType.Slider,
def: 1,
min: 0.5,
max: 2,
step: 0.05,
unit: UnitText.Percentage
}
});
令人惊讶的是,这就是我们需要做的全部事情。Sonolus 知道这个特殊的选项名 NameText.NoteSpeed
并会自动调整 BPM 速度以及 BPM 变化中的所有 BPM 值来匹配。由于我们已经完全基于 BPM 和节拍编写了我们的引擎,这不需要太大的修改就能工作。
音符大小
我们也会提供一个音符大小选项,这样玩家就可以将其调整到他们喜欢的大小。
让我们添加一个音符大小选项到我们的引擎设置中去:
class Options {
public:
// ...
int noteSize = 1;
}Options;
auto options = defineOptions<class Options>({
{
name: NameText.NoteSize,
scope: Scope,
type: OptionType.Slider,
def: 1,
min: 0.1,
max: 2,
step: 0.05,
unit: UnitText.Percentage
}
});
在那之后,让我们使用音符大小选项的值并调整音符半径:
class Initialization: public Archetype {
// ...
SonolusApi preprocess() {
FUNCBEGIN
let noteRadius = 0.2 * LevelOptions.get(Options.noteSize);
// ...
return VOID;
}
// ...
};