← Back to list

Fantacode Demo — Systems Page

The basic pattern for the systems page will be to have the system name at the top, buttons at the bottom for the demo scenes, and then the…

Sean Duggan · 2026-08-18 05:41 · 0 claps · 1.5 min read
#unity #fantacode-studios #demo
Open on Medium ↗
Wiki topics: 🎮 · Gaming

Fantacode Demo — Systems Page

The basic pattern for the systems page will be to have the system name at the top, buttons at the bottom for the demo scenes, and then the middle part filled with a ScrollView containing the controls. We built that middle bit a few days ago.

[embed]Fantacode Studios — Adding Controls So, when we left off, we had the system buttons, and made a quick mock-up of what a system Window might look like. Now…medium.com

I feel like we prototyped the systems page… but I can’t find it right now. We’ll set up a basic script for loading the system page.

public class SystemPageScript : MonoBehaviour
{
    [SerializeField] TMP_Text _titleText;
    [SerializeField] InputControlTable _controlTable;
    [SerializeField] Transform _buttonContainer;

    [SerializeField] DemoButtonScript _buttonPrefab;

    public void LoadSystem(FantacodeSystemSO system)
    {
        _titleText.text = system._systemName;
        _controlTable.GenerateTable(system._controls);

        // Clear the existing buttons
        foreach (Transform child in _buttonContainer)
        {
            Destroy(child.gameObject);
        }

        foreach (string demoName in system._demoLevelNames)
        {
            string buttonText = demoName.Substring(demoName.LastIndexOf("/") + 1);
            if (buttonText.EndsWith(".unity"))
            {
                buttonText = buttonText.Substring(0, buttonText.Length - ".unity".Length);
            }

            DemoButtonScript button = Instantiate(_buttonPrefab, _buttonContainer);
            button.SetupButton(buttonText, demoName);
        }
    }
}

And for the demo buttons, so that they can load their assigned scene:

public class DemoButtonScript : MonoBehaviour
{
    [SerializeField] TMP_Text _buttonText;

    string _demoPath;

    public void SetupButton(string buttonText, string demoPath)
    {
        _buttonText.text = buttonText;
        _demoPath = demoPath;
    }

    public void LoadDemoScene()
    {
        SceneChangeManager.Instance.LoadNewScene(_demoPath);
    }
}

And… it basically works although there are some weird bugs when loading the inputs for a system, and I still don’t have the loading screen working properly.

I need to fix the issue with loading that input screen (I think they’re just not spaced properly), write up the input files for the other systems (right now, I only have Parkour set up), and then I can release this.


메타데이터
post_id
831808f17be4
slug
fantacode-demo-systems-page-831808f17be4
url
https://medium.com/@sean.duggan/fantacode-demo-systems-page-831808f17be4
canonical_url
https://medium.com/@sean.duggan/fantacode-demo-systems-page-831808f17be4
author_url
https://medium.com/@sean.duggan
status
ok
fetched_at
2026-08-19 00:06:08