using UnityEngine; /// /// ThemeSelectionScreen scene manager /// public class ThemeSelectionScreen : MonoBehaviour { /// /// Theme prefab /// public GameObject themePrefab; /// /// Reference to container holding all theme-buttons /// public Transform themesContainer; /// /// Start is called before the first frame update /// void Start() { // TODO: change to ScriptableObject ThemeList themeList = ThemeLoader.LoadJson(); for (int i = 0; i < themeList.themes.Length; i++) { Theme theme = themeList.themes[i]; // First, you need to create a new button game object GameObject instance = GameObject.Instantiate(themePrefab, themesContainer); // Dynamically load appearance ThemeItem item = instance.GetComponent(); item.themeTitle = theme.name; item.themeDescription = theme.description; item.startGameCallback = () => OnButtonClick(theme.name); } } /// /// Load the game with a specified theme /// /// Name of the clicked theme public void OnButtonClick(string clickedTheme) { PlayerPrefs.SetString("themeName", clickedTheme); SystemController.GetInstance().SwapScene(PlayerPrefs.GetString("gamePath")); } }