72 lines
2.2 KiB
Markdown
72 lines
2.2 KiB
Markdown
|
|
||
|
# Manager
|
||
|
`inherits SubViewport`
|
||
|
|
||
|
### Usage
|
||
|
This is the backbone of the demo.
|
||
|
|
||
|
The `Manager` is responsible for the scene management and background music.
|
||
|
|
||
|
#### Setup
|
||
|
1. Create a new scene with a type of `Manager` and make it the main scene.
|
||
|
2. Set the `Bgm` from either in-editor or through code.
|
||
|
3. Add scenes to be run in order with `register_scene()`
|
||
|
4. Create a child of type `AnimationPlayer` and create a new animation with a `Call Method Track`
|
||
|
5. Add keyframes at points where you wish the scene to be changed. Call method `set_scene(scene_number)`.
|
||
|
6. Call `start_audio()` and `$AnimationPlayer.play()` to start the bgm and scene timeline
|
||
|
|
||
|
#### Example script
|
||
|
```gdscript
|
||
|
extends Manager
|
||
|
|
||
|
var scene1: PackedScene = preload("res://entities/scene_1.tscn");
|
||
|
var scene2: PackedScene = preload("res://entities/scene_2.tscn");
|
||
|
var scene3: PackedScene = preload("res://entities/scene_3.tscn");
|
||
|
var scene4: PackedScene = preload("res://entities/scene_4.tscn");
|
||
|
|
||
|
func _ready() -> void:
|
||
|
register_scene(scene1);
|
||
|
register_scene(scene2);
|
||
|
register_scene(scene3);
|
||
|
register_scene(scene4);
|
||
|
|
||
|
start_audio();
|
||
|
$AnimationPlayer.play("timeline");
|
||
|
|
||
|
```
|
||
|
|
||
|
### Properties
|
||
|
| Type | Name | Default |
|
||
|
| -------------------- | ----------- | ------- |
|
||
|
| `String` | bgm | `Null` |
|
||
|
| `Array[PackedScene]` | scenes | `Array[PackedScene]` |
|
||
|
| `int` | beat_count (unused) | `Null` |
|
||
|
|
||
|
`bgm`
|
||
|
Stores the path to the background music as `String`
|
||
|
|
||
|
`scenes` stores the registered scenes. Usually you shouldn't edit this manually
|
||
|
|
||
|
`beat_count` Unused
|
||
|
|
||
|
|
||
|
### Methods
|
||
|
|
||
|
| Returns | Name |
|
||
|
| ------- | ---- |
|
||
|
| `void` | `set_scene(number: int)` |
|
||
|
| `void` | `register_scene(scene: PackedScene)` |
|
||
|
| `void` | `start_audio()` |
|
||
|
|
||
|
#### set_scene(number: int)
|
||
|
Changes the current scene to the scene at index `number` in `scenes`
|
||
|
|
||
|
#### register_scene(scene: PackedScene)
|
||
|
Registers the `scene` to the manager.
|
||
|
|
||
|
Each registered scene is added to `scenes` and gets preloaded into memory.
|
||
|
|
||
|
The scene number is the scene's index in `scenes`, so the first scene registered gets number `0`, the next one gets number `1` and so on.
|
||
|
|
||
|
#### start_audio()
|
||
|
Calling this function will start playing back the `bgm` on the main bus.
|