diff --git a/Editor/Localization/ja.po b/Editor/Localization/ja.po index 6b905be..1a614d2 100644 --- a/Editor/Localization/ja.po +++ b/Editor/Localization/ja.po @@ -163,8 +163,9 @@ msgstr "実行" msgid "Stop" msgstr "停止" - -#: Editor/UI/Settings/AutopilotStateEditor.cs +# requireReset HelpBox message +msgid "Autopilot has an invalid running state. Please click the \"Reset\" button." +msgstr "オートパイロットの実行状態が不正です。「リセット」ボタンをクリックしてください。" # リセットボタン msgid "Reset" diff --git a/Editor/UI/Settings/AutopilotSettingsEditor.cs b/Editor/UI/Settings/AutopilotSettingsEditor.cs index d6ddf54..8806022 100644 --- a/Editor/UI/Settings/AutopilotSettingsEditor.cs +++ b/Editor/UI/Settings/AutopilotSettingsEditor.cs @@ -60,6 +60,10 @@ public class AutopilotSettingsEditor : UnityEditor.Editor private static readonly string s_runButton = L10n.Tr("Run"); private static readonly string s_stopButton = L10n.Tr("Stop"); + + private static readonly string s_requireReset = L10n.Tr("Autopilot has an invalid running state. Please click the \"Reset\" button."); + private static readonly string s_resetButton = L10n.Tr("Reset"); + private const float SpacerPixels = 10f; private const float SpacerPixelsUnderHeader = 4f; // @formatter:on @@ -118,7 +122,15 @@ public override void OnInspectorGUI() GUILayout.Space(SpacerPixels); var state = AutopilotState.Instance; - if (state.IsRunning) + if (state.IsInvalidState) + { + EditorGUILayout.HelpBox(s_requireReset, MessageType.Error); + if (GUILayout.Button(s_resetButton)) + { + state.Reset(); + } + } + else if (state.IsRunning) { if (GUILayout.Button(s_stopButton)) { diff --git a/Editor/UI/Settings/AutopilotStateEditor.cs b/Editor/UI/Settings/AutopilotStateEditor.cs index 33d23fa..b947463 100644 --- a/Editor/UI/Settings/AutopilotStateEditor.cs +++ b/Editor/UI/Settings/AutopilotStateEditor.cs @@ -13,14 +13,25 @@ namespace DeNA.Anjin.Editor.UI.Settings [CustomEditor(typeof(AutopilotState))] public class AutopilotStateEditor : UnityEditor.Editor { + // @formatter:off + private static readonly string s_requireReset = L10n.Tr("Autopilot has an invalid running state. Please click the \"Reset\" button."); private static readonly string s_resetButton = L10n.Tr("Reset"); + // @formatter:on /// public override void OnInspectorGUI() { var state = AutopilotState.Instance; - EditorGUI.BeginDisabledGroup(!state.IsRunning || EditorApplication.isPlayingOrWillChangePlaymode); + if (state.IsInvalidState) + { + EditorGUILayout.HelpBox(s_requireReset, MessageType.Error); + } + else + { + EditorGUI.BeginDisabledGroup(!state.IsInvalidState); + } + if (GUILayout.Button(s_resetButton)) { state.Reset(); diff --git a/README_ja.md b/README_ja.md index 1d0569f..eb2e55f 100644 --- a/README_ja.md +++ b/README_ja.md @@ -186,8 +186,8 @@ Reporterインスタンスは、UnityエディタのProjectウィンドウで右 ### 1. Unityエディタ(GUI)の再生モードで実行 -実行したい設定ファイル(AutopilotSettings)をインスペクタで開き、**実行**ボタンをクリックすると、オートパイロットが起動します。 -設定された実行時間が経過するか、**停止**ボタンクリックで停止します。 +実行したい設定ファイル(AutopilotSettings)をインスペクタで開き、**実行** ボタンをクリックすると、オートパイロットが起動します。 +設定された実行時間が経過するか、**停止** ボタンクリックで停止します。 > [!TIP] > 編集モードからオートパイロットを起動したとき、オートパイロットが停止すると編集モードに戻ります。 @@ -773,7 +773,7 @@ $(ROM) -LAUNCH_AUTOPILOT_SETTINGS Path/To/AutopilotSettings ### オートパイロットは停止しているのに AutopilotSettings の Run ボタンが表示されない Anjinの実行状態を永続化している `AutopilotState.asset` が不正な状態になっている恐れがあります。 -インスペクタで開いて**Reset**ボタンをクリックしてください。 +インスペクタで開いて **リセット** ボタンをクリックしてください。 それでも解決しない場合、 `AutopilotState.asset` を削除してみてください。 @@ -781,7 +781,7 @@ Anjinの実行状態を永続化している `AutopilotState.asset` が不正な ### プロジェクトを再生モードにすると勝手にオートパイロットが動いてしまう Anjinの実行状態を永続化している `AutopilotState.asset` が不正な状態になっている恐れがあります。 -インスペクタで開いて**Reset**ボタンをクリックしてください。 +インスペクタで開いて **リセット** ボタンをクリックしてください。 それでも解決しない場合、 `AutopilotState.asset` を削除してみてください。 diff --git a/Runtime/Settings/AutopilotState.cs b/Runtime/Settings/AutopilotState.cs index 9db93b9..e37b502 100644 --- a/Runtime/Settings/AutopilotState.cs +++ b/Runtime/Settings/AutopilotState.cs @@ -67,6 +67,14 @@ public bool IsRunning } } +#if UNITY_EDITOR + /// + /// This state Is invalid (read-only). + /// True if Autopilot is running and in Edit Mode, it is required to reset. + /// + internal bool IsInvalidState => IsRunning && !EditorApplication.isPlayingOrWillChangePlaymode; +#endif + [NonSerialized] private static AutopilotState s_instance;