From 0d5e4a83a1ef57bcd7aa5d15bae8ed194d7afe64 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EC=A0=95=EC=98=81=EB=AF=BC?= <117150306+jym04@users.noreply.github.com> Date: Tue, 17 Jun 2025 14:46:03 +0900 Subject: [PATCH 1/2] =?UTF-8?q?New=20Project,=20OpenProject=20=EC=8B=9C=20?= =?UTF-8?q?=EC=9E=85=EB=A0=A5=20=EC=A0=95=EB=B3=B4=EA=B0=80=20=EC=9E=98?= =?UTF-8?q?=EB=AA=BB=EB=90=9C=20=EA=B2=BD=EC=9A=B0=20=ED=95=B4=EB=8B=B9=20?= =?UTF-8?q?=EC=9E=85=EB=A0=A5=EC=B0=BD=20UI=20=ED=95=98=EC=9D=B4=EB=9D=BC?= =?UTF-8?q?=EC=9D=B4=ED=8A=B8=20=EC=A0=81=EC=9A=A9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Assets/Prefabs/AAA/Panel_Start.prefab | 32 ++++++++++++++ .../AAA/Panel_TopMenuNewProjectInfo.prefab | 32 ++++++++++++++ .../AAA/Panel_TopMenuOpenProjectInfo.prefab | 16 +++++++ .../Studio/UI/Panel/Panel_NewProjectInfo.cs | 43 ++++++++++++++++++- .../UI/Panel/Panel_TopMenuNewProjectInfo.cs | 41 +++++++++++++++++- .../UI/Panel/Panel_TopMenuOpenProjectInfo.cs | 36 ++++++++++++++++ 6 files changed, 197 insertions(+), 3 deletions(-) diff --git a/Assets/Prefabs/AAA/Panel_Start.prefab b/Assets/Prefabs/AAA/Panel_Start.prefab index 159e9c37..21d3c660 100644 --- a/Assets/Prefabs/AAA/Panel_Start.prefab +++ b/Assets/Prefabs/AAA/Panel_Start.prefab @@ -4223,6 +4223,7 @@ GameObject: - component: {fileID: 1215421424825789100} - component: {fileID: 3237974088270507350} - component: {fileID: 7781437951359503076} + - component: {fileID: 2568825789228562020} m_Layer: 5 m_Name: InputField_ProjectRoute m_TagString: Untagged @@ -4390,6 +4391,21 @@ MonoBehaviour: isAlert: 0 m_InputValidator: {fileID: 0} m_ShouldActivateOnSelect: 1 +--- !u!114 &2568825789228562020 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6045950372922419404} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: e19747de3f5aca642ab2be37e372fb86, type: 3} + m_Name: + m_EditorClassIdentifier: + m_EffectColor: {r: 1, g: 0, b: 0, a: 0} + m_EffectDistance: {x: 1, y: -1} + m_UseGraphicAlpha: 1 --- !u!1 &6119926203839472246 GameObject: m_ObjectHideFlags: 0 @@ -5112,6 +5128,7 @@ GameObject: - component: {fileID: 3051697916339464255} - component: {fileID: 7025850301156575891} - component: {fileID: 2420147620014466822} + - component: {fileID: 409873312456034788} m_Layer: 5 m_Name: InputField_ProjectName m_TagString: Untagged @@ -5278,6 +5295,21 @@ MonoBehaviour: isAlert: 0 m_InputValidator: {fileID: 0} m_ShouldActivateOnSelect: 1 +--- !u!114 &409873312456034788 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7114420628450455510} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: e19747de3f5aca642ab2be37e372fb86, type: 3} + m_Name: + m_EditorClassIdentifier: + m_EffectColor: {r: 1, g: 0, b: 0, a: 0} + m_EffectDistance: {x: 1, y: -1} + m_UseGraphicAlpha: 1 --- !u!1 &7381463749175027285 GameObject: m_ObjectHideFlags: 0 diff --git a/Assets/Prefabs/AAA/Panel_TopMenuNewProjectInfo.prefab b/Assets/Prefabs/AAA/Panel_TopMenuNewProjectInfo.prefab index 9fcd6726..390288f8 100644 --- a/Assets/Prefabs/AAA/Panel_TopMenuNewProjectInfo.prefab +++ b/Assets/Prefabs/AAA/Panel_TopMenuNewProjectInfo.prefab @@ -1470,6 +1470,7 @@ GameObject: - component: {fileID: 690843152395397420} - component: {fileID: 3426080986512915541} - component: {fileID: 8578852367055184770} + - component: {fileID: 7898329979593988254} m_Layer: 5 m_Name: InputField_ProjectName m_TagString: Untagged @@ -1636,6 +1637,21 @@ MonoBehaviour: isAlert: 0 m_InputValidator: {fileID: 0} m_ShouldActivateOnSelect: 1 +--- !u!114 &7898329979593988254 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6206254914448314055} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: e19747de3f5aca642ab2be37e372fb86, type: 3} + m_Name: + m_EditorClassIdentifier: + m_EffectColor: {r: 1, g: 0, b: 0, a: 0} + m_EffectDistance: {x: 1, y: -1} + m_UseGraphicAlpha: 1 --- !u!1 &6791370336908178505 GameObject: m_ObjectHideFlags: 0 @@ -2451,6 +2467,7 @@ GameObject: - component: {fileID: 7223380533684380914} - component: {fileID: 5114126078834999655} - component: {fileID: 4177504299572712703} + - component: {fileID: 2492899147223604304} m_Layer: 5 m_Name: InputField_ProjectRoute m_TagString: Untagged @@ -2618,3 +2635,18 @@ MonoBehaviour: isAlert: 0 m_InputValidator: {fileID: 0} m_ShouldActivateOnSelect: 1 +--- !u!114 &2492899147223604304 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 9046724292656261623} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: e19747de3f5aca642ab2be37e372fb86, type: 3} + m_Name: + m_EditorClassIdentifier: + m_EffectColor: {r: 1, g: 0, b: 0, a: 0} + m_EffectDistance: {x: 1, y: -1} + m_UseGraphicAlpha: 1 diff --git a/Assets/Prefabs/AAA/Panel_TopMenuOpenProjectInfo.prefab b/Assets/Prefabs/AAA/Panel_TopMenuOpenProjectInfo.prefab index c08e3efc..d8295272 100644 --- a/Assets/Prefabs/AAA/Panel_TopMenuOpenProjectInfo.prefab +++ b/Assets/Prefabs/AAA/Panel_TopMenuOpenProjectInfo.prefab @@ -1033,6 +1033,7 @@ GameObject: - component: {fileID: 7302933557080329570} - component: {fileID: 6020157158691740455} - component: {fileID: 861918741281426438} + - component: {fileID: 2875478437783657308} m_Layer: 5 m_Name: InputField_ProjectRoute m_TagString: Untagged @@ -1200,6 +1201,21 @@ MonoBehaviour: isAlert: 0 m_InputValidator: {fileID: 0} m_ShouldActivateOnSelect: 1 +--- !u!114 &2875478437783657308 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6112395419969745802} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: e19747de3f5aca642ab2be37e372fb86, type: 3} + m_Name: + m_EditorClassIdentifier: + m_EffectColor: {r: 1, g: 0, b: 0, a: 0} + m_EffectDistance: {x: 1, y: -1} + m_UseGraphicAlpha: 1 --- !u!1 &7080535857353195513 GameObject: m_ObjectHideFlags: 0 diff --git a/Assets/Scripts/Studio/UI/Panel/Panel_NewProjectInfo.cs b/Assets/Scripts/Studio/UI/Panel/Panel_NewProjectInfo.cs index 40691c8a..3708879e 100644 --- a/Assets/Scripts/Studio/UI/Panel/Panel_NewProjectInfo.cs +++ b/Assets/Scripts/Studio/UI/Panel/Panel_NewProjectInfo.cs @@ -1,4 +1,6 @@ +using Studio.Core; using System; +using System.Collections; using System.Collections.Generic; using System.IO; using System.Linq; @@ -37,7 +39,7 @@ namespace Studio.UI if (paths.Count > 0 && !string.IsNullOrEmpty(paths[0].Name)) { - InputField_ProjectRoute.text = paths[0].Name; + InputField_ProjectRoute.text = paths[0].Name; } onClickFileExplorer?.Invoke(); } @@ -47,8 +49,14 @@ namespace Studio.UI var projectName = GetProjectName(); var projectPath = GetProjectRoute(); - if (!IsProjectNameVaild(projectName) || !IsProjectPathVaild(projectPath) || !IsProjectExistVaild()) + if (!IsProjectNameVaild(projectName) || !IsProjectExistVaild()) { + InputFieldHighlight(InputField_ProjectName); + return; + } + else if (!IsProjectPathVaild(projectPath)) + { + InputFieldHighlight(InputField_ProjectRoute); return; } @@ -107,5 +115,36 @@ namespace Studio.UI } return true; } + private void InputFieldHighlight(TMP_InputField inputField) + { + CoroutineRunner.instance.StartCoroutine(Blink(inputField)); + } + private IEnumerator Blink(TMP_InputField inputField) + { + var inputFieldOutline = inputField.GetComponent(); + Color tempColor = inputFieldOutline.effectColor; + var count = 0; + + while (count < 1) + { + while (inputFieldOutline.effectColor.a <= 1f) + { + tempColor.a += 0.1f; + inputFieldOutline.effectColor = tempColor; + yield return new WaitForSeconds(0.02f); + } + yield return new WaitForSeconds(0.1f); + + while (inputFieldOutline.effectColor.a >= 0f) + { + tempColor.a -= 0.1f; + inputFieldOutline.effectColor = tempColor; + yield return new WaitForSeconds(0.02f); + } + yield return new WaitForSeconds(0.1f); + + count++; + } + } } } diff --git a/Assets/Scripts/Studio/UI/Panel/Panel_TopMenuNewProjectInfo.cs b/Assets/Scripts/Studio/UI/Panel/Panel_TopMenuNewProjectInfo.cs index 8e9a596d..83aaa6e2 100644 --- a/Assets/Scripts/Studio/UI/Panel/Panel_TopMenuNewProjectInfo.cs +++ b/Assets/Scripts/Studio/UI/Panel/Panel_TopMenuNewProjectInfo.cs @@ -1,4 +1,6 @@ +using Studio.Core; using System; +using System.Collections; using System.IO; using TMPro; using TriLibCore.SFB; @@ -41,8 +43,14 @@ namespace Studio.UI var projectName = GetProjectName(); var projectPath = GetProjectRoute(); - if (!IsProjectNameVaild(projectName) || !IsProjectPathVaild(projectPath) || !IsProjectExistVaild()) + if (!IsProjectNameVaild(projectName) || !IsProjectExistVaild()) { + InputFieldHighlight(InputField_ProjectName); + return; + } + else if (!IsProjectPathVaild(projectPath)) + { + InputFieldHighlight(InputField_ProjectRoute); return; } @@ -99,5 +107,36 @@ namespace Studio.UI } return true; } + private void InputFieldHighlight(TMP_InputField inputField) + { + CoroutineRunner.instance.StartCoroutine(Blink(inputField)); + } + private IEnumerator Blink(TMP_InputField inputField) + { + var inputFieldOutline = inputField.GetComponent(); + Color tempColor = inputFieldOutline.effectColor; + var count = 0; + + while (count < 1) + { + while (inputFieldOutline.effectColor.a <= 1f) + { + tempColor.a += 0.1f; + inputFieldOutline.effectColor = tempColor; + yield return new WaitForSeconds(0.02f); + } + yield return new WaitForSeconds(0.1f); + + while (inputFieldOutline.effectColor.a >= 0f) + { + tempColor.a -= 0.1f; + inputFieldOutline.effectColor = tempColor; + yield return new WaitForSeconds(0.02f); + } + yield return new WaitForSeconds(0.1f); + + count++; + } + } } } diff --git a/Assets/Scripts/Studio/UI/Panel/Panel_TopMenuOpenProjectInfo.cs b/Assets/Scripts/Studio/UI/Panel/Panel_TopMenuOpenProjectInfo.cs index 896010a9..e305aac8 100644 --- a/Assets/Scripts/Studio/UI/Panel/Panel_TopMenuOpenProjectInfo.cs +++ b/Assets/Scripts/Studio/UI/Panel/Panel_TopMenuOpenProjectInfo.cs @@ -1,4 +1,6 @@ +using Studio.Core; using System; +using System.Collections; using System.IO; using TMPro; using TriLibCore.SFB; @@ -41,7 +43,10 @@ namespace Studio.UI var projectPath = GetProjectRoute(); if (!IsPathVaild(projectPath)) + { + InputFieldHighlight(InputField_ProjectRoute); return; + } onClickOpen?.Invoke(); } @@ -68,5 +73,36 @@ namespace Studio.UI } return true; } + private void InputFieldHighlight(TMP_InputField inputField) + { + CoroutineRunner.instance.StartCoroutine(Blink(inputField)); + } + private IEnumerator Blink(TMP_InputField inputField) + { + var inputFieldOutline = inputField.GetComponent(); + Color tempColor = inputFieldOutline.effectColor; + var count = 0; + + while (count < 1) + { + while (inputFieldOutline.effectColor.a <= 1f) + { + tempColor.a += 0.1f; + inputFieldOutline.effectColor = tempColor; + yield return new WaitForSeconds(0.02f); + } + yield return new WaitForSeconds(0.1f); + + while (inputFieldOutline.effectColor.a >= 0f) + { + tempColor.a -= 0.1f; + inputFieldOutline.effectColor = tempColor; + yield return new WaitForSeconds(0.02f); + } + yield return new WaitForSeconds(0.1f); + + count++; + } + } } } -- 2.48.1.windows.1 From 61b189174089d88a1b951f1202a6392c701616df Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EC=A0=95=EC=98=81=EB=AF=BC?= <117150306+jym04@users.noreply.github.com> Date: Tue, 17 Jun 2025 18:24:04 +0900 Subject: [PATCH 2/2] =?UTF-8?q?=EA=B2=BD=EB=A1=9C=20=EC=A7=80=EC=A0=95=20?= =?UTF-8?q?=EC=98=A4=EB=A5=98=20=EC=88=98=EC=A0=95=20=EB=B0=8F=20APISettin?= =?UTF-8?q?g=20=EC=98=A4=EB=A5=98=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Prefabs/UI/PRF_APIConnectionItem.prefab | 12 ++++++------ .../Scripts/Studio/UI/Panel/Panel_NewProjectInfo.cs | 5 +++-- .../Scripts/Studio/UI/Panel/Panel_OpenProjectInfo.cs | 4 +++- .../Studio/UI/Panel/Panel_TopMenuNewProjectInfo.cs | 3 ++- .../Studio/UI/Panel/Panel_TopMenuOpenProjectInfo.cs | 3 ++- 5 files changed, 16 insertions(+), 11 deletions(-) diff --git a/Assets/Resources/Prefabs/UI/PRF_APIConnectionItem.prefab b/Assets/Resources/Prefabs/UI/PRF_APIConnectionItem.prefab index bc7fac2f..44bc1b23 100644 --- a/Assets/Resources/Prefabs/UI/PRF_APIConnectionItem.prefab +++ b/Assets/Resources/Prefabs/UI/PRF_APIConnectionItem.prefab @@ -1141,9 +1141,9 @@ RectTransform: - {fileID: 2081494434516734423} m_Father: {fileID: 6029866318953262369} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0, y: 1} - m_AnchorMax: {x: 1, y: 1} - m_AnchoredPosition: {x: 83.5, y: -190} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 0} + m_AnchoredPosition: {x: 83.5, y: 30} m_SizeDelta: {x: -333, y: 40} m_Pivot: {x: 0.5, y: 0.5} --- !u!222 &4316208365858436923 @@ -2906,9 +2906,9 @@ RectTransform: - {fileID: 7115248029429128929} m_Father: {fileID: 6029866318953262369} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0, y: 1} - m_AnchorMax: {x: 1, y: 1} - m_AnchoredPosition: {x: 83.5, y: -150} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 0} + m_AnchoredPosition: {x: 83.5, y: 70} m_SizeDelta: {x: -333, y: 24} m_Pivot: {x: 0.5, y: 0.5} --- !u!222 &4708186645858634878 diff --git a/Assets/Scripts/Studio/UI/Panel/Panel_NewProjectInfo.cs b/Assets/Scripts/Studio/UI/Panel/Panel_NewProjectInfo.cs index 3708879e..c298f962 100644 --- a/Assets/Scripts/Studio/UI/Panel/Panel_NewProjectInfo.cs +++ b/Assets/Scripts/Studio/UI/Panel/Panel_NewProjectInfo.cs @@ -32,14 +32,15 @@ namespace Studio.UI InputField_ProjectRoute.text = OptionURL.defaultPath; } - + private void OnClickFileExplorer() { var paths = StandaloneFileBrowser.OpenFolderPanel("Select Folder", "", false); if (paths.Count > 0 && !string.IsNullOrEmpty(paths[0].Name)) { - InputField_ProjectRoute.text = paths[0].Name; + var path = Path.GetDirectoryName(paths[0].Name); + InputField_ProjectRoute.text = path; } onClickFileExplorer?.Invoke(); } diff --git a/Assets/Scripts/Studio/UI/Panel/Panel_OpenProjectInfo.cs b/Assets/Scripts/Studio/UI/Panel/Panel_OpenProjectInfo.cs index 5ea961d0..7360ddd6 100644 --- a/Assets/Scripts/Studio/UI/Panel/Panel_OpenProjectInfo.cs +++ b/Assets/Scripts/Studio/UI/Panel/Panel_OpenProjectInfo.cs @@ -84,7 +84,9 @@ namespace Studio.UI if (paths.Count > 0 && !string.IsNullOrEmpty(paths[0].Name)) { - InputField_ProjectRoute.text = paths[0].Name; + var path = Path.GetDirectoryName(paths[0].Name); + + InputField_ProjectRoute.text = path; InputField_ProjectRoute.onEndEdit?.Invoke(InputField_ProjectRoute.text); } onClickFileExplorer?.Invoke(); diff --git a/Assets/Scripts/Studio/UI/Panel/Panel_TopMenuNewProjectInfo.cs b/Assets/Scripts/Studio/UI/Panel/Panel_TopMenuNewProjectInfo.cs index 83aaa6e2..dc9d5900 100644 --- a/Assets/Scripts/Studio/UI/Panel/Panel_TopMenuNewProjectInfo.cs +++ b/Assets/Scripts/Studio/UI/Panel/Panel_TopMenuNewProjectInfo.cs @@ -34,7 +34,8 @@ namespace Studio.UI if (paths.Count > 0 && !string.IsNullOrEmpty(paths[0].Name)) { - InputField_ProjectRoute.text = paths[0].Name; + var path = Path.GetDirectoryName(paths[0].Name); + InputField_ProjectRoute.text = path; } } diff --git a/Assets/Scripts/Studio/UI/Panel/Panel_TopMenuOpenProjectInfo.cs b/Assets/Scripts/Studio/UI/Panel/Panel_TopMenuOpenProjectInfo.cs index e305aac8..f9fb1d0b 100644 --- a/Assets/Scripts/Studio/UI/Panel/Panel_TopMenuOpenProjectInfo.cs +++ b/Assets/Scripts/Studio/UI/Panel/Panel_TopMenuOpenProjectInfo.cs @@ -34,7 +34,8 @@ namespace Studio.UI if (paths.Count > 0 && !string.IsNullOrEmpty(paths[0].Name)) { - InputField_ProjectRoute.text = paths[0].Name; + var path = Path.GetDirectoryName(paths[0].Name); + InputField_ProjectRoute.text = path; } } -- 2.48.1.windows.1