void DrawTyperWord(TyperRhythm word, float width) { EditorGUILayout.BeginVertical(); EditorGUILayout.TextField(word.Word.ToString(), _wordTextStyle, GUILayout.Width(width), GUILayout.Height(width)); word.WaitTime = EditorGUILayout.FloatField(word.WaitTime, GUILayout.Width(width)); EditorGUILayout.EndVertical(); }
void DrawDialogueView(DialogueAsset asset) { EditorGUILayout.BeginHorizontal(); EditorGUIUtility.labelWidth = 60; asset.DialogType = (E_DialogType)EditorGUILayout.EnumPopup("对话框类型", asset.DialogType); if (asset.DialogType == E_DialogType.FullScreen) { EditorGUIUtility.labelWidth = 90; asset.IsNewTalk = EditorGUILayout.Toggle("是否为新段落", asset.IsNewTalk); asset.IsNewPage = EditorGUILayout.Toggle("是否为新的一页", asset.IsNewPage); } else { asset.TalkType = (E_TalkType)EditorGUILayout.EnumPopup("内容类型", asset.TalkType); } asset.MaskType = (E_MaskType)EditorGUILayout.EnumPopup("显示动画", asset.MaskType); GUILayout.Label("背景"); asset.Background = (GameObject)EditorGUILayout.ObjectField(asset.Background, typeof(GameObject), false); asset.Bgm = (AudioClip)EditorGUILayout.ObjectField("背景音乐", asset.Bgm, typeof(AudioClip), false); EditorGUILayout.EndHorizontal(); if (asset.DialogType == E_DialogType.Normal) { EditorGUIUtility.labelWidth = 60; EditorGUILayout.BeginHorizontal(); asset.LeftBody = (GameObject)EditorGUILayout.ObjectField("立绘(左)", asset.LeftBody, typeof(GameObject), false); asset.LeftBodyShowType = (E_BodyShowType)EditorGUILayout.EnumPopup("显示类型", asset.LeftBodyShowType); EditorGUILayout.EndHorizontal(); EditorGUILayout.BeginHorizontal(); asset.RightBody = (GameObject)EditorGUILayout.ObjectField("立绘(右)", asset.RightBody, typeof(GameObject), false); asset.RightBodyShowType = (E_BodyShowType)EditorGUILayout.EnumPopup("显示类型", asset.RightBodyShowType); EditorGUILayout.EndHorizontal(); EditorGUILayout.BeginHorizontal(); asset.CenterBody = (GameObject)EditorGUILayout.ObjectField("立绘(中)", asset.CenterBody, typeof(GameObject), false); asset.CenterBodyShowType = (E_BodyShowType)EditorGUILayout.EnumPopup("显示类型", asset.CenterBodyShowType); EditorGUILayout.EndHorizontal(); EditorGUILayout.BeginHorizontal(); asset.BottomBody = (GameObject)EditorGUILayout.ObjectField("立绘(下)", asset.BottomBody, typeof(GameObject), false); asset.BottomBodyShowType = (E_BodyShowType)EditorGUILayout.EnumPopup("显示类型", asset.BottomBodyShowType); EditorGUILayout.EndHorizontal(); EditorGUILayout.BeginHorizontal(); EditorGUIUtility.labelWidth = 60; asset.NamePos = (E_NamePos)EditorGUILayout.EnumPopup("名字位置", asset.NamePos); asset.TalkerName = EditorGUILayout.TextField("角色名", asset.TalkerName); EditorGUIUtility.labelWidth = 90; asset.DubDelay = EditorGUILayout.IntField("配音等待字数", asset.DubDelay); asset.Dub = (AudioClip)EditorGUILayout.ObjectField("角色配音", asset.Dub, typeof(AudioClip), false); EditorGUILayout.EndHorizontal(); } EditorGUILayout.BeginHorizontal(); asset.LanguageType = (E_LanguageType)EditorGUILayout.EnumPopup("语言类型", asset.LanguageType); if (asset.LanguageType != _lastLanguageType) { _lastLanguageType = asset.LanguageType; } EditorGUILayout.EndHorizontal(); GUILayout.Label("事件列表"); _eventScrollPos = EditorGUILayout.BeginScrollView(_eventScrollPos, GUILayout.Height(90)); _talkEventList?.DoLayoutList(); EditorGUILayout.EndScrollView(); GUILayout.Label("对话内容"); EditorGUILayout.BeginHorizontal(); asset.LanguageDict.TryGetValue(asset.LanguageType, out ContentData data); data.Content = EditorGUILayout.TextArea(data.Content, GUILayout.Height(80)); if (GUILayout.Button("生成", GUILayout.Width(80), GUILayout.Height(80))) { data.WordList = new List <TyperRhythm>(); for (int i = 0; i < data.Content.Length; i++) { bool isDirective = false; string word = null; if (data.Content[i] == '<') { int count = 0; for (int j = i; j < data.Content.Length; j++) { word += data.Content[j]; if (data.Content[j] == '>') { Regex reg = new Regex(@"<c=[0-9a-fA-F]{6}"); if (word.Equals("<b>") || word.Equals("</b>") || reg.IsMatch(word) || word.Equals("</c>")) { isDirective = true; } break; } count++; } if (isDirective) { i += count; } else { word = data.Content[i].ToString(); } } else { word = data.Content[i].ToString(); } TyperRhythm typerWord = new TyperRhythm(word, 0.1f, isDirective); data.WordList.Add(typerWord); } //SaveDialogAsset(_curDialogAsset, _curDialogAsset); } EditorGUILayout.EndHorizontal(); if (data.WordList.Count > 0) { DrawTyperWordList(data.WordList); } }