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]); }); } } }
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(); }