/// <summary> /// アクティブの情報出力 /// </summary> private void LipSyncExport() { string tmpPath = Path.Combine(Application.dataPath, "ExpansionTools/LipSyncSelect/tmp/ClassTemplate.cs.template"); string exportText = BearFileUtil.GetAllText(tmpPath); VRC_AvatarDescriptor avatarDescriptor = GetVRCAvatarDescriptor(); if (avatarDescriptor.lipSync == VRC_AvatarDescriptor.LipSyncStyle.VisemeBlendShape) { var visemeBlendShapes = avatarDescriptor.VisemeBlendShapes; List <string> blendShapeNames = GetBlendShapeNames(); for (int i = 0; i < visemeBlendShapes.Length; i++) { string[] matchNames = blendShapeNames.Where(t => t == visemeBlendShapes[i]).ToArray(); if (0 < matchNames.Length) { string replaceKey = "@" + ((VRC_AvatarDescriptor.Viseme)i).ToString() + "@"; exportText = exportText.Replace(replaceKey, matchNames[0]); } } } var exportWindow = EditorWindow.GetWindow <LipSyncExport>(true); exportWindow.exportText = exportText; exportWindow.position = new Rect(200f, 200f, 300f, 100f); }
void OnGUI() { EditorGUILayout.BeginVertical(); GUILayout.FlexibleSpace(); { EditorGUILayout.BeginHorizontal(); GUILayout.FlexibleSpace(); { GUILayout.Label("ファイル名を半角英数字で入力してください。"); } GUILayout.FlexibleSpace(); EditorGUILayout.EndHorizontal(); EditorGUILayout.BeginHorizontal(); GUILayout.FlexibleSpace(); EditorGUILayout.BeginVertical(); GUILayout.FlexibleSpace(); { EditorGUILayout.BeginHorizontal(); GUILayout.FlexibleSpace(); EditorGUILayout.BeginVertical(); GUILayout.FlexibleSpace(); { fileName = GUILayout.TextField(fileName, GUILayout.Width(150f)); } GUILayout.FlexibleSpace(); EditorGUILayout.EndVertical(); GUILayout.FlexibleSpace(); EditorGUILayout.EndHorizontal(); EditorGUILayout.BeginHorizontal(); GUILayout.FlexibleSpace(); EditorGUILayout.BeginVertical(); GUILayout.FlexibleSpace(); { if (GUILayout.Button("OK", GUILayout.Height(25f), GUILayout.Width(40f))) { if (Regex.IsMatch(fileName, @"[^a-zA-Z0-9]")) { EditorUtility.DisplayDialog("エラー", "ファイル名は半角英数字で入力してください。", "OK"); } else { string className = char.ToUpper(fileName[0]) + fileName.Substring(1); exportText = exportText.Replace("@CLASS_NAME@", className); string tmpPath = Path.Combine(Application.dataPath, "ExpansionTools/LipSyncSelect/tmp/" + className + "Tmp.cs"); if (!BearFileUtil.WriteText(exportText, tmpPath, Encoding.GetEncoding("UTF-8"), true)) { EditorUtility.DisplayDialog("エラー", "ファイルの保存に失敗しました。\nもう一度やり直いて下さい。", "OK"); } Close(); AssetDatabase.Refresh(); } } } GUILayout.FlexibleSpace(); EditorGUILayout.EndVertical(); GUILayout.FlexibleSpace(); EditorGUILayout.EndHorizontal(); } GUILayout.FlexibleSpace(); EditorGUILayout.EndVertical(); GUILayout.FlexibleSpace(); EditorGUILayout.EndHorizontal(); } GUILayout.FlexibleSpace(); EditorGUILayout.EndVertical(); }