private void NewLanguageDialog() { string path = EditorUtility.SaveFilePanelInProject("Save new language asset file", "Language", "asset", ""); if (!string.IsNullOrEmpty(path)) { LanguageUnit lu = ScriptableObject.CreateInstance <LanguageUnit> (); lu.keys = new List <string> (); lu.values = new List <string> (); AssetDatabase.CreateAsset(lu, path); AssetDatabase.SaveAssets(); tu.updateLanguageFileList(); } }
// Returns index of key/value pair to be deleted private void displayLanguageUnitEditor() { int deletionMark = -1; LanguageUnit lu = tu.getLanguageUnit(languagePopupIndex); if (lu) { EditorGUILayout.BeginHorizontal(); lu.language = EditorGUILayout.TextField("Language", lu.language); EditorGUILayout.EndHorizontal(); for (int i = 0; i < lu.keys.Count; i++) { EditorGUILayout.BeginHorizontal(); EditorGUILayout.LabelField("Key", GUILayout.MaxWidth(30)); lu.keys [i] = EditorGUILayout.TextField(lu.keys [i]); EditorGUILayout.LabelField("String", GUILayout.MaxWidth(50)); lu.values [i] = EditorGUILayout.TextField(lu.values [i]); if (GUILayout.Button("X", GUILayout.MaxWidth(20))) { deletionMark = i; } EditorGUILayout.EndHorizontal(); } EditorGUILayout.BeginHorizontal(); if (GUILayout.Button("Add New String")) { lu.keys.Add(""); lu.values.Add(""); } EditorGUILayout.EndHorizontal(); if (deletionMark != -1) { GUI.FocusControl(null); lu.keys.RemoveAt(deletionMark); lu.values.RemoveAt(deletionMark); EditorUtility.SetDirty(this); } EditorUtility.SetDirty(lu); } }
// Language Assets must be stored in the same directory as the Translation Unit // When it is asked to update the language file list, the TU will search its // directory for language files that are not tracked and add them to the list public void updateLanguageFileList() { string path = UnityEditor.AssetDatabase.GetAssetPath(this); if (!string.IsNullOrEmpty(path)) { string assetName = System.IO.Path.GetFileName(path); string containingFolder = path.Substring(0, path.Length - (assetName.Length + 1)); string[] assets = UnityEditor.AssetDatabase.FindAssets("t:LanguageUnit", new string[] { containingFolder }); languageFiles.Clear(); for (int i = 0; i < assets.Length; i++) { LanguageUnit lu = UnityEditor.AssetDatabase.LoadAssetAtPath <LanguageUnit> (UnityEditor.AssetDatabase.GUIDToAssetPath(assets [i])); if (!languageFiles.Contains(lu)) { languageFiles.Add(lu); } } } }
void OnGUI() { GUILayout.BeginHorizontal(); GUILayout.Label("Dialog Tree Editor", EditorStyles.boldLabel); if (GUILayout.Button("Open Dialog Tree")) { OpenDialogTree(); } if (GUILayout.Button("New Dialog Tree")) { CreateDialogTree(); } GUILayout.EndHorizontal(); GUILayout.BeginHorizontal(); languageAsset = (LanguageUnit)EditorGUILayout.ObjectField("Language File", languageAsset, typeof(LanguageUnit), false); GUILayout.EndHorizontal(); GUILayout.BeginHorizontal(); EditorGUILayout.HelpBox("Choosing a language asset allows you to view text previews and choose text strings from the language asset", MessageType.Info); GUILayout.EndHorizontal(); GUILayout.BeginHorizontal(); EditorGUILayout.LabelField("Search and Copy String Key to Clipboard", EditorStyles.boldLabel); GUILayout.EndHorizontal(); GUILayout.BeginHorizontal(); EditorGUILayout.LabelField("Search String:", GUILayout.MaxWidth(200)); search = EditorGUILayout.TextField(search); GUILayout.EndHorizontal(); if (languageAsset != null && !string.IsNullOrEmpty(search)) { for (int i = 0; i < languageAsset.values.Count; i++) { if (languageAsset.values [i].Contains(search)) { EditorGUILayout.BeginHorizontal(); if (GUILayout.Button("Copy Key", GUILayout.MaxWidth(100))) { EditorGUIUtility.systemCopyBuffer = languageAsset.keys [i]; } EditorGUILayout.BeginVertical(); GUIStyle wrap = new GUIStyle(); wrap.wordWrap = true; EditorGUILayout.LabelField(languageAsset.values [i], wrap); EditorGUILayout.EndVertical(); EditorGUILayout.EndHorizontal(); } } } EditorGUILayout.Space(); EditorGUILayout.Space(); if (tree != null) { // Collapse values for foldouts while (collapse.Count < tree.treeNodes.Count) { collapse.Add(false); } GUILayout.BeginHorizontal(); // Node View if (GUILayout.Button("Node View")) { nodeView = true; treeView = false; } if (GUILayout.Button("Tree View")) { nodeView = false; treeView = true; } GUILayout.EndHorizontal(); if (nodeView) { displayNodeView(); } if (treeView) { displayTreeView(); } EditorUtility.SetDirty(tree); } }