Persistent Settings (#234)

* modularize tabs-style menus

* make remix properties use modular design

* add persistent settings
This commit is contained in:
minenice55
2023-01-24 14:31:49 -05:00
committed by GitHub
parent 891daf869a
commit 9cbd353506
35 changed files with 15925 additions and 16579 deletions

View File

@ -9,7 +9,7 @@ namespace HeavenStudio.Editor
{
public class TabButton : MonoBehaviour
{
[SerializeField] GameObject Content;
public GameObject Content;
public void OnClick()
{

View File

@ -1,3 +1,4 @@
using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
@ -10,6 +11,9 @@ namespace HeavenStudio.Editor
public class TabsManager : MonoBehaviour
{
[SerializeField] GameObject activeContent;
[SerializeField] public Transform contentHolder;
[SerializeField] public Transform buttonsHolder;
[SerializeField] private GameObject buttonPrefab;
public void SetActiveContent(GameObject content)
{
@ -38,5 +42,49 @@ namespace HeavenStudio.Editor
activeContent.GetComponent<TabsContent>().OnCloseTab();
}
}
public List<GameObject> GenerateTabs(TabsEntry[] tabs)
{
List<GameObject> tabContents = new List<GameObject>();
bool madeFirst = false;
foreach(var tab in tabs)
{
var button = Instantiate(buttonPrefab, buttonsHolder);
button.GetComponentInChildren<TMP_Text>().text = tab.name;
var tabContent = Instantiate(tab.tabPrefab, contentHolder);
if(!madeFirst)
{
madeFirst = true;
SetActiveContent(tabContent);
}
else
{
tabContent.SetActive(false);
}
button.GetComponent<TabButton>().Content = tabContent;
tabContents.Add(tabContent);
}
return tabContents;
}
public void CleanTabs()
{
foreach(Transform child in buttonsHolder)
{
Destroy(child.gameObject);
}
foreach(Transform child in contentHolder)
{
child.GetComponent<TabsContent>()?.OnCloseTab();
Destroy(child.gameObject);
}
}
[Serializable]
public struct TabsEntry
{
public string name;
public GameObject tabPrefab;
}
}
}