Beispiel #1
0
 private void Awake()
 {
     sceneLinkChain   = Resources.Load <SceneLinkChain>("SceneLinkChain");
     writeCoroutine   = WriteText();
     currentSceneData = GetComponent <SceneData>();
     sceneTransition  = GetComponent <UISceneTransition>();
 }
    private void CreateChoices(List <string> choiceStrings, int currentSceneNumber, List <UnityAction> choiceButtonActions = null)
    {
        sceneData = GetComponentInParent <SceneData>();

        foreach (string s in choiceStrings)
        {
            GameObject choice = Instantiate(choicePrefab, gameObject.transform);
            choiceGameObjects.Add(choice);
            choiceButtons.Add(choice.GetComponent <Button>());
            choiceTexts.Add(choice.GetComponentInChildren <TextMeshProUGUI>());
        }

        if (choiceButtonActions == null)
        {
            choiceButtonActions = new List <UnityAction>();
            sceneLinkChain      = Resources.Load <SceneLinkChain>("SceneLinkChain");

            for (int i = 0; i < sceneData.nextScenes.Count; i++)
            {
                //choiceButtons[i].onClick.AddListener(() => sceneLinkChain.GoToSceneIngame(sceneData.sceneNumber, sceneData.nextScenes[i]));
                choiceButtons[i].onClick.AddListener(delegate { sceneLinkChain.GoToSceneIngame(sceneData.sceneNumber, sceneData.nextScenes[i]); });
            }
        }
    }
Beispiel #3
0
    public override void OnInspectorGUI()
    {
        if (refreshSceneData)
        {
            sceneLinkChain = Resources.Load <SceneLinkChain>("SceneLinkChain");
            sceneData      = FindObjectOfType <SceneData>();
            if (sceneData.sceneNumber == 0 && (sceneData.nextScenes == null || sceneData.previousScenes == null))
            {
                sceneData.nextScenes     = new List <int>();
                sceneData.previousScenes = new List <int>();
            }
            refreshSceneData = false;
        }
        GUILayout.BeginVertical();
        base.OnInspectorGUI();
        GUILayout.BeginHorizontal();

        //For initial scene
        if (sceneData.sceneNumber == 0 && sceneData.nextScenes.Count != 0)
        {
            GUILayout.BeginVertical();
            for (int i = 0; i < sceneData.nextScenes.Count; i++)
            {
                if (GUILayout.Button("Next Scene [" + sceneData.nextScenes[i] + "]"))
                {
                    sceneLinkChain.GoToScene(sceneData.sceneNumber, sceneData.nextScenes[i], saveOnSceneChange);
                    refreshSceneData = true;
                }
            }
            GUILayout.EndVertical();
        }
        //For every other scene
        else if (sceneData.sceneNumber != 0)
        {
            GUILayout.BeginVertical();
            for (int i = 0; i < sceneData.previousScenes.Count; i++)
            {
                if (GUILayout.Button("Previous Scene[" + sceneData.previousScenes[i] + "]"))
                {
                    sceneLinkChain.GoToScene(sceneData.sceneNumber, sceneData.previousScenes[i], saveOnSceneChange);
                    refreshSceneData = true;
                }
            }
            GUILayout.EndVertical();
            GUILayout.BeginVertical();
            for (int i = 0; i < sceneData.nextScenes.Count; i++)
            {
                if (sceneData.nextScenes.Count != 0)
                {
                    if (GUILayout.Button("Next Scene[" + sceneData.nextScenes[i] + "]"))
                    {
                        sceneLinkChain.GoToScene(sceneData.sceneNumber, sceneData.nextScenes[i], saveOnSceneChange);
                        refreshSceneData = true;
                    }
                }
            }
            GUILayout.EndVertical();
        }
        GUILayout.EndHorizontal();
        GUILayout.BeginVertical();
        if (GUILayout.Button("New Scene"))
        {
            sceneLinkChain.CreateNewScene(sceneData);
            EditorUtility.SetDirty(sceneLinkChain);
            AssetDatabase.SaveAssets();
            AssetDatabase.Refresh();
            refreshSceneData = true;
        }
        GUILayout.EndVertical();
        saveOnSceneChange = GUILayout.Toggle(saveOnSceneChange, "Save on scene change");
        GUILayout.EndVertical();
    }