void ScriptGUI() { using (new GUILayout.VerticalScope(GUILayout.Width(messageWinWidth))) { scriptScrollPos = EditorGUILayout.BeginScrollView( scriptScrollPos, GUI.skin.box); WriteScript(); EditorGUILayout.EndScrollView(); SwitchFocusedToggle(); if (onDetectScroll && scriptScrollPos.y != maxY) { maxScrollY = scriptScrollPos.y; onDetectScroll = false; JumpLine(scriptToggles.IndexOf(true) - 1); Debug.Log("Detect"); } using (new GUILayout.HorizontalScope()) { if (GUILayout.Button("空行追加")) { InsertLine(" "); } if (GUILayout.Button("↓コピー")) { int index = scriptToggles.FindIndex(x => x); if (index >= 0) { inputMessage = scriptLines[index]; } } /*if (GUILayout.Button("全選択 解除", EditorStyles.miniButtonMid)) * { * scriptToggles = scriptToggles.Select(x => x = false).ToList(); * }*/ if (GUILayout.Button("行削除")) { RemoveSelectedLine(); } } if (scriptUndo == null) { scriptUndo = new ScriptUndo(scriptLines); } using (new GUILayout.HorizontalScope()) { if (GUILayout.Button("一つ戻す")) { scriptUndo.Undo(); } if (GUILayout.Button("やり直す")) { scriptUndo.Redo(); } } } }
void LoadScript() { string path = SCRIPT_FOLDER_PATH + string.Format("{0}.txt", scriptName); script = AssetDatabase.LoadAssetAtPath <TextAsset>(path); if (!File.Exists(path)) { script = null; return; } scriptLines = new List <string>(); scriptLines.AddRange(Regex.Split(script.text, "\r\n|\r|\n")); scriptLines.Add(""); int lineCount = scriptLines.Count; scriptToggles = new List <bool>(); //scriptToggles.Add(true); for (int i = 0; i < lineCount; i++) { scriptToggles.Add(false); } scriptUndo = new ScriptUndo(scriptLines); onDetectScroll = true; scriptScrollPos.y = maxY; Debug.Log(scriptToggles.Count); }