protected override void OnStart() { var scene = new ReactiveScene(); var layer = new ReactiveLayer2D(); var controller = new KeyboardController<int>(); controller.BindKey(Keys.Down, 0); controller.BindKey(Keys.Up, 1); controller.BindKey(Keys.Z, 2); controller.BindKey(Keys.X, 3); var layout = new LinearPanel() { ItemSpan = new Vector2DF(0, 36), Position = new Vector2DF(20, 20), }; layout.SetEasingBehaviorUp(EasingStart.StartRapidly2, EasingEnd.EndSlowly3, 10); selector = new Selector<int, int>(controller, layout) { Loop = true, CursorOffset = new Vector2DF(-5, -3), }; selector.Cursor.Texture = Engine.Graphics.CreateTexture2D("ListCursor.png"); selector.BindKey(0, 1, 2, 3); selector.SetEasingBehaviorUp(EasingStart.StartRapidly2, EasingEnd.EndSlowly3, 10); font = Engine.Graphics.CreateDynamicFont("", 20, new Color(255, 255, 255, 255), 0, new Color(0, 0, 0, 255)); for(int i = 0; i < 8; i++) { var obj = new ListItem() { Text = $"選択肢{i}", Font = font, }; Engine.AddObject2D(obj); selector.AddChoice(i, obj); } var moveSound = Engine.Sound.CreateSoundSource("kachi38.wav", true); var decideSound = Engine.Sound.CreateSoundSource("pi78.wav", true); var cancelSound = Engine.Sound.CreateSoundSource("pi11.wav", true); selector.OnSelectionChanged.Subscribe(i => Engine.Sound.Play(moveSound)); selector.OnDecide.Subscribe(i => { Engine.Sound.Play(decideSound); }); selector.OnCancel.Subscribe(i => { Engine.Sound.Play(cancelSound); }); Engine.ChangeScene(scene); scene.AddLayer(layer); layer.AddObject(selector); }