com.amanotes.themeengine
v1.0.1
Published
Theme management system with event-driven updates for sprites, text, and audio
Readme
ThemeEngine
Event-driven theme management system for Unity. Change sprites, audio, and text at runtime with automatic UI updates.
Quick Start
1. Create a Theme Config
Right-click in Project → Create > ThemeEngine > Theme Config
Add your theme assets:
- Sprites: Add keys like "background", "button", "icon"
- Audio Clips: Add keys like "bgm", "click_sound"
- Text: Add keys like "title", "score_label"
- Video Clips: Add keys like "intro_video", "background_video"
2. Add Handlers to GameObjects
For Sprites:
- Select GameObject with
SpriteRenderer - Add Component → ThemeSpriteHandler
- Assign your ThemeConfig
- Set the key (e.g., "background")
For Audio:
- Select GameObject with
AudioSource - Add Component → ThemeAudioHandler
- Assign your ThemeConfig
- Set the key (e.g., "bgm")
For Text:
- Select GameObject with
Textcomponent - Add Component → ThemeTextHandler
- Assign your ThemeConfig
- Set the key (e.g., "title")
For Video:
- Select GameObject with
VideoPlayer - Add Component → ThemeVideoHandler
- Assign your ThemeConfig
- Set the key (e.g., "intro_video")
Done! The handlers automatically update when theme values change.
Change Theme at Runtime
using Amanotes.Core;
[SerializeField] private ThemeConfig theme;
// Change values - handlers update automatically
theme.SetSprite("background", newSprite);
theme.SetAudio("bgm", newClip);
theme.SetText("title", "New Title");
theme.SetVideo("intro_video", newVideoClip);
// Or get values directly
Sprite bg = theme.GetSprite("background");
AudioClip music = theme.GetAudio("bgm");
string title = theme.GetText("title");
VideoClip video = theme.GetVideo("intro_video");Listen to Changes (Optional)
void OnEnable()
{
theme.OnSpriteChanged += HandleSpriteChange;
theme.OnAudioChanged += HandleAudioChange;
theme.OnTextChanged += HandleTextChange;
theme.OnVideoChanged += HandleVideoChange;
}
void OnDisable()
{
theme.OnSpriteChanged -= HandleSpriteChange;
theme.OnAudioChanged -= HandleAudioChange;
theme.OnTextChanged -= HandleTextChange;
theme.OnVideoChanged -= HandleVideoChange;
}
void HandleSpriteChange(string key)
{
if (key == "background")
{
// Custom logic here
}
}Components
- ThemeConfig - ScriptableObject that stores all theme data
- ThemeSpriteHandler - Auto-updates SpriteRenderer
- ThemeAudioHandler - Auto-updates AudioSource
- ThemeTextHandler - Auto-updates Text component
- ThemeVideoHandler - Auto-updates VideoPlayer
