目的
Fungusで localizationなどを想定する際にテキストデータを外部に出力することがあります。Exportするときに以下のように毎回 保存場所を聞かれるため、Default値をInspetorから指定したい
Demo
以下のように InspectorからDefault Pathを指定して、Export Standart Text To Default Path
を押すことで Inspectorのパスに保存されます。
開発環境
- Unity 2022.2.0f1
- Fungus v3.13.8
追加・変更点
(画像は変更差分)
まず Localization.cs
に Inspector上に入力するための SerializeField を追加します。
次に Editor側で Buttonの処理やパスの処理を追加していきます。
Inspectorの値を取得するために、 SerializedProperty
で変数のプロパティを取得します。
SerializedPropertyの詳細は公式ドキュメントを確認ください
protected SerializedProperty activeLanguageProp; protected SerializedProperty localizationFileProp; protected SerializedProperty savePathProp; protected virtual void OnEnable() { activeLanguageProp = serializedObject.FindProperty("activeLanguage"); localizationFileProp = serializedObject.FindProperty("localizationFile"); savePathProp = serializedObject.FindProperty("savePath"); } public override void OnInspectorGUI() { serializedObject.Update(); Localization localization = target as Localization; EditorGUILayout.PropertyField(activeLanguageProp); EditorGUILayout.PropertyField(localizationFileProp); EditorGUILayout.PropertyField(savePathProp);
追加のButtonを定義します。
if (GUILayout.Button(new GUIContent("Export Standard Text At Default Path"))) { ExportStandardText(localization, savePathProp.stringValue); }
また追加機能用にパスを引数から指定できる関数を追加します
public virtual void ExportStandardText(Localization localization, string path) { if (path.Length == 0) { return; } localization.ClearLocalizeableCache(); string textData = localization.GetStandardText(); File.WriteAllText(path, textData); AssetDatabase.Refresh(); ShowNotification(localization); }