From 741b7ee4d53c205ff9e05c458a55739013abee6c 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: Thu, 29 Jan 2026 15:31:00 +0900 Subject: [PATCH] =?UTF-8?q?[=EC=A0=95=EC=98=81=EB=AF=BC]=20=ED=94=84?= =?UTF-8?q?=EB=A1=9C=EC=A0=9D=ED=8A=B8=20=EC=84=A0=ED=83=9D=20=EA=B8=B0?= =?UTF-8?q?=EB=8A=A5=20=EC=88=98=EC=A0=95=20=EC=9E=91=EC=97=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 26.01.29 - 프로젝트 선택 기능 수정 작업 --- Assets/Resources/DOTweenSettings.asset | 54 ++++++ Assets/Resources/DOTweenSettings.asset.meta | 8 + Assets/Scenes/Demo_ProejctSelect.unity | 179 ++++++++++++++++++ Assets/Scripts/ChunilENG/ChunilENGAppMain.cs | 2 + .../Command/UICommand/OpenHomePanelCommand.cs | 18 ++ .../UICommand/OpenHomePanelCommand.cs.meta | 2 + Assets/Scripts/ChunilENG/Objects/Building.cs | 6 +- .../UI/FloorController/FloorControlItem.cs | 4 +- .../UI/FloorController/FloorControlPanel.cs | 8 +- Assets/Scripts/ChunilENG/UI/TopMenuPanel.cs | 5 +- Assets/Scripts/UI/ProjectListController.cs | 11 +- Assets/Scripts/UI/UICanvas.cs | 7 + 12 files changed, 293 insertions(+), 11 deletions(-) create mode 100644 Assets/Resources/DOTweenSettings.asset create mode 100644 Assets/Resources/DOTweenSettings.asset.meta create mode 100644 Assets/Scripts/ChunilENG/Command/UICommand/OpenHomePanelCommand.cs create mode 100644 Assets/Scripts/ChunilENG/Command/UICommand/OpenHomePanelCommand.cs.meta diff --git a/Assets/Resources/DOTweenSettings.asset b/Assets/Resources/DOTweenSettings.asset new file mode 100644 index 00000000..467fc644 --- /dev/null +++ b/Assets/Resources/DOTweenSettings.asset @@ -0,0 +1,54 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &11400000 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 16995157, guid: a811bde74b26b53498b4f6d872b09b6d, type: 3} + m_Name: DOTweenSettings + m_EditorClassIdentifier: DOTween.dll::DG.Tweening.Core.DOTweenSettings + useSafeMode: 1 + safeModeOptions: + logBehaviour: 2 + nestedTweenFailureBehaviour: 0 + timeScale: 1 + unscaledTimeScale: 1 + useSmoothDeltaTime: 0 + maxSmoothUnscaledTime: 0.15 + rewindCallbackMode: 0 + showUnityEditorReport: 0 + logBehaviour: 0 + drawGizmos: 1 + defaultRecyclable: 0 + defaultAutoPlay: 3 + defaultUpdateType: 0 + defaultTimeScaleIndependent: 0 + defaultEaseType: 6 + defaultEaseOvershootOrAmplitude: 1.70158 + defaultEasePeriod: 0 + defaultAutoKill: 1 + defaultLoopType: 0 + debugMode: 0 + debugStoreTargetId: 1 + showPreviewPanel: 1 + storeSettingsLocation: 0 + modules: + showPanel: 0 + audioEnabled: 1 + physicsEnabled: 1 + physics2DEnabled: 1 + spriteEnabled: 1 + uiEnabled: 1 + textMeshProEnabled: 0 + tk2DEnabled: 0 + deAudioEnabled: 0 + deUnityExtendedEnabled: 0 + epoOutlineEnabled: 0 + createASMDEF: 0 + showPlayingTweens: 0 + showPausedTweens: 0 diff --git a/Assets/Resources/DOTweenSettings.asset.meta b/Assets/Resources/DOTweenSettings.asset.meta new file mode 100644 index 00000000..50a04eb6 --- /dev/null +++ b/Assets/Resources/DOTweenSettings.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: bc84b1eda74358f47ac107c27d19a910 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scenes/Demo_ProejctSelect.unity b/Assets/Scenes/Demo_ProejctSelect.unity index 70fb45ea..7e001ac6 100644 --- a/Assets/Scenes/Demo_ProejctSelect.unity +++ b/Assets/Scenes/Demo_ProejctSelect.unity @@ -256,6 +256,80 @@ Transform: - {fileID: 628078963} m_Father: {fileID: 0} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &188315806 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 188315807} + - component: {fileID: 188315809} + - component: {fileID: 188315808} + m_Layer: 5 + m_Name: KEPCOFacilityAndSensorLabelCanvas + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &188315807 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 188315806} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 749811071} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &188315808 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 188315806} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 28a477308da5f7642906ccc8a7bee928, type: 3} + m_Name: + m_EditorClassIdentifier: Assembly-CSharp::ChunilENG.Management.ThermostatInfoItemManager + isInit: 0 + thermostatInfoItem: {fileID: 0} + defaultNameHeight: 1.5 + originScale: {x: 1, y: 1, z: 1} + minScale: 0.8 + maxScale: 1.3 + scaleClamp: 1 +--- !u!114 &188315809 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 188315806} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 87daeb4bd8cb62344b867db30c2c34cd, type: 3} + m_Name: + m_EditorClassIdentifier: + isInit: 0 + machineInfoItem: {fileID: 0} + defaultNameHeight: 1.5 + minScale: 0.75 + maxScale: 1.3 + scaleClamp: 1 --- !u!1 &206414007 GameObject: m_ObjectHideFlags: 0 @@ -964,6 +1038,8 @@ RectTransform: m_ConstrainProportionsScale: 0 m_Children: - {fileID: 1943212478} + - {fileID: 188315807} + - {fileID: 1851378393} m_Father: {fileID: 498761980} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0, y: 0} @@ -1771,6 +1847,7 @@ MonoBehaviour: m_Name: m_EditorClassIdentifier: Assembly-CSharp::ChunilENG.ChunilENGAppMain cameraController: {fileID: 0} + projectListController: {fileID: 0} --- !u!1 &1523259836 GameObject: m_ObjectHideFlags: 0 @@ -2238,6 +2315,80 @@ MonoBehaviour: currentDistance: 30 currentAzimuth: 32 cameraPivot: {fileID: 0} +--- !u!1 &1851378392 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1851378393} + - component: {fileID: 1851378395} + - component: {fileID: 1851378394} + m_Layer: 5 + m_Name: HyundaiWIA + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1851378393 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1851378392} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 749811071} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1851378394 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1851378392} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 28a477308da5f7642906ccc8a7bee928, type: 3} + m_Name: + m_EditorClassIdentifier: Assembly-CSharp::ChunilENG.Management.ThermostatInfoItemManager + isInit: 0 + thermostatInfoItem: {fileID: 0} + defaultNameHeight: 1.5 + originScale: {x: 1, y: 1, z: 1} + minScale: 0.8 + maxScale: 1.3 + scaleClamp: 1 +--- !u!114 &1851378395 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1851378392} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 87daeb4bd8cb62344b867db30c2c34cd, type: 3} + m_Name: + m_EditorClassIdentifier: + isInit: 0 + machineInfoItem: {fileID: 0} + defaultNameHeight: 1.5 + minScale: 0.75 + maxScale: 1.3 + scaleClamp: 1 --- !u!1 &1894899057 GameObject: m_ObjectHideFlags: 0 @@ -3356,6 +3507,10 @@ PrefabInstance: propertyPath: m_StaticShadowCaster value: 0 objectReference: {fileID: 0} + - target: {fileID: 290325765835358597, guid: 02de84299dbbd354fa8fe07b680d5d8c, type: 3} + propertyPath: index + value: 5 + objectReference: {fileID: 0} - target: {fileID: 295142088309498721, guid: 02de84299dbbd354fa8fe07b680d5d8c, type: 3} propertyPath: m_StaticEditorFlags value: 1 @@ -9828,6 +9983,10 @@ PrefabInstance: propertyPath: m_StaticEditorFlags value: 1 objectReference: {fileID: 0} + - target: {fileID: 3183993441619517544, guid: 02de84299dbbd354fa8fe07b680d5d8c, type: 3} + propertyPath: index + value: 0 + objectReference: {fileID: 0} - target: {fileID: 3190154346075120442, guid: 02de84299dbbd354fa8fe07b680d5d8c, type: 3} propertyPath: m_CastShadows value: 1 @@ -12000,6 +12159,10 @@ PrefabInstance: propertyPath: m_StaticEditorFlags value: 1 objectReference: {fileID: 0} + - target: {fileID: 4184018941781392851, guid: 02de84299dbbd354fa8fe07b680d5d8c, type: 3} + propertyPath: index + value: 2 + objectReference: {fileID: 0} - target: {fileID: 4185318652204861182, guid: 02de84299dbbd354fa8fe07b680d5d8c, type: 3} propertyPath: m_StaticEditorFlags value: 1 @@ -13256,6 +13419,10 @@ PrefabInstance: propertyPath: m_StaticShadowCaster value: 0 objectReference: {fileID: 0} + - target: {fileID: 4765074342053365812, guid: 02de84299dbbd354fa8fe07b680d5d8c, type: 3} + propertyPath: index + value: 1 + objectReference: {fileID: 0} - target: {fileID: 4767237812867436520, guid: 02de84299dbbd354fa8fe07b680d5d8c, type: 3} propertyPath: m_StaticEditorFlags value: 1 @@ -15504,6 +15671,10 @@ PrefabInstance: propertyPath: m_RenderingLayerMask value: 4294967295 objectReference: {fileID: 0} + - target: {fileID: 5901532726994830447, guid: 02de84299dbbd354fa8fe07b680d5d8c, type: 3} + propertyPath: index + value: 3 + objectReference: {fileID: 0} - target: {fileID: 5904592878466902507, guid: 02de84299dbbd354fa8fe07b680d5d8c, type: 3} propertyPath: m_ScaleInLightmap value: 0 @@ -16192,6 +16363,10 @@ PrefabInstance: propertyPath: m_StaticEditorFlags value: 1 objectReference: {fileID: 0} + - target: {fileID: 6261162410268618183, guid: 02de84299dbbd354fa8fe07b680d5d8c, type: 3} + propertyPath: index + value: 4 + objectReference: {fileID: 0} - target: {fileID: 6272054069949685752, guid: 02de84299dbbd354fa8fe07b680d5d8c, type: 3} propertyPath: m_CastShadows value: 1 @@ -19848,6 +20023,10 @@ PrefabInstance: propertyPath: m_StaticEditorFlags value: 1 objectReference: {fileID: 0} + - target: {fileID: 8015710047439777487, guid: 02de84299dbbd354fa8fe07b680d5d8c, type: 3} + propertyPath: index + value: 6 + objectReference: {fileID: 0} - target: {fileID: 8016581240934273481, guid: 02de84299dbbd354fa8fe07b680d5d8c, type: 3} propertyPath: m_StaticEditorFlags value: 1 diff --git a/Assets/Scripts/ChunilENG/ChunilENGAppMain.cs b/Assets/Scripts/ChunilENG/ChunilENGAppMain.cs index 695b80ed..d2f04700 100644 --- a/Assets/Scripts/ChunilENG/ChunilENGAppMain.cs +++ b/Assets/Scripts/ChunilENG/ChunilENGAppMain.cs @@ -14,6 +14,7 @@ namespace ChunilENG public class ChunilENGAppMain : SingletonApp { public OrbitalController cameraController; + public ProjectListController projectListController; public Action Initialized; @@ -29,6 +30,7 @@ namespace ChunilENG SetNetworkConfig(); cameraController = FindAnyObjectByType(); + projectListController = FindAnyObjectByType(); if (Initialized != null) { diff --git a/Assets/Scripts/ChunilENG/Command/UICommand/OpenHomePanelCommand.cs b/Assets/Scripts/ChunilENG/Command/UICommand/OpenHomePanelCommand.cs new file mode 100644 index 00000000..abf8e3c1 --- /dev/null +++ b/Assets/Scripts/ChunilENG/Command/UICommand/OpenHomePanelCommand.cs @@ -0,0 +1,18 @@ +using ChunilENG.Management; +using UVC.UI.Commands; + +namespace ChunilENG.UI.Command +{ + public class OpenHomePanelCommand : ICommand + { + public void Execute(object? parameter = null) + { + ChunilENGAppMain.Instance.projectListController.ReturnHome(); + + var uiManager = ChunilENGSceneMain.Instance.GetManager(); + uiManager.GetCanvas().ClosePanel(); + + //uiManager.GetCanvas().GetPanel().ResetToolBox(); + } + } +} \ No newline at end of file diff --git a/Assets/Scripts/ChunilENG/Command/UICommand/OpenHomePanelCommand.cs.meta b/Assets/Scripts/ChunilENG/Command/UICommand/OpenHomePanelCommand.cs.meta new file mode 100644 index 00000000..7703b3cb --- /dev/null +++ b/Assets/Scripts/ChunilENG/Command/UICommand/OpenHomePanelCommand.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: 3e1b334660e386c48b576e833e45ec81 \ No newline at end of file diff --git a/Assets/Scripts/ChunilENG/Objects/Building.cs b/Assets/Scripts/ChunilENG/Objects/Building.cs index 7c1db23a..c98c4832 100644 --- a/Assets/Scripts/ChunilENG/Objects/Building.cs +++ b/Assets/Scripts/ChunilENG/Objects/Building.cs @@ -15,7 +15,7 @@ namespace ChunilENG private List thermostatList = new List(); // Floor - public Floor GetCurFloor() { return floorList[curFloorIndex + 1]; } + public Floor GetCurFloor() { return floorList[curFloorIndex]; } private List floorList = new List(); private int curFloorIndex; @@ -59,9 +59,9 @@ namespace ChunilENG public void SetFloor(int index) { - for (int i = 0; i < floorList.Count; ++i) + for (int i = 1; i < floorList.Count; ++i) { - bool bottom = i <= index + 1; + bool bottom = i <= index; floorList[i].gameObject.SetActive(bottom); } diff --git a/Assets/Scripts/ChunilENG/UI/FloorController/FloorControlItem.cs b/Assets/Scripts/ChunilENG/UI/FloorController/FloorControlItem.cs index 3e584398..dde7a602 100644 --- a/Assets/Scripts/ChunilENG/UI/FloorController/FloorControlItem.cs +++ b/Assets/Scripts/ChunilENG/UI/FloorController/FloorControlItem.cs @@ -25,13 +25,13 @@ namespace ChunilENG.UI SelectImage = transform.Find(nameof(SelectImage)).GetComponent(); - if (value + 1 >= 6) + if (value >= 6) { buttonText.SetText("RF"); } else { - buttonText.SetText($"{value + 1}F"); + buttonText.SetText($"{value}F"); } button.onClick.AddListener(OnClickButton); diff --git a/Assets/Scripts/ChunilENG/UI/FloorController/FloorControlPanel.cs b/Assets/Scripts/ChunilENG/UI/FloorController/FloorControlPanel.cs index 8d9722c2..5f79c9e1 100644 --- a/Assets/Scripts/ChunilENG/UI/FloorController/FloorControlPanel.cs +++ b/Assets/Scripts/ChunilENG/UI/FloorController/FloorControlPanel.cs @@ -10,7 +10,7 @@ namespace ChunilENG.UI { public class FloorControlPanel : UIPanel { - public List floorButtons = new List(); + public Dictionary floorButtons = new Dictionary(); public FloorControlItem itemPrefab; public FloorControlItem currentFloorItem; @@ -19,19 +19,19 @@ namespace ChunilENG.UI public override async UniTask Init() { itemPrefab = Resources.Load($"{ResourceURL.chunilENGUIPrefabFolderPath}{nameof(FloorControlItem)}"); - SettingButtons(5); + SettingButtons(6); gameObject.SetActive(false); await UniTask.CompletedTask; } public void SettingButtons(int floorCount) { - for (int i = 0; i <= floorCount; i++) + for (int i = 1; i <= floorCount; i++) { var floorButton = Instantiate(itemPrefab, transform); floorButton.SettingButton(i); floorButton.onClickButton += OnClickButton; - floorButtons.Add(floorButton); + floorButtons.Add(i, floorButton); } ChangeValueFromOutside(floorCount); diff --git a/Assets/Scripts/ChunilENG/UI/TopMenuPanel.cs b/Assets/Scripts/ChunilENG/UI/TopMenuPanel.cs index fc5def72..c334cd46 100644 --- a/Assets/Scripts/ChunilENG/UI/TopMenuPanel.cs +++ b/Assets/Scripts/ChunilENG/UI/TopMenuPanel.cs @@ -61,7 +61,10 @@ namespace ChunilENG "설정 창을 엽니다."); //홈 화면 돌아가기 - toolbarModel.AddStandardButton("홈 화면 돌아가기", $"{ResourceURL.uiSpriteFolderPath}TopToolBar/IMG_Exit", new ActionCommand(() => { Debug.Log("홈 화면 돌아가기 창 열기"); var controller = FindFirstObjectByType(FindObjectsInactive.Include); if (controller != null) { controller.ReturnHome(); } }), "홈 화면 돌아가기 창을 엽니다."); + toolbarModel.AddStandardButton("홈 화면 돌아가기", + $"{ResourceURL.uiSpriteFolderPath}TopToolBar/IMG_Exit", + new OpenHomePanelCommand(), + "홈 화면 돌아가기 창을 엽니다."); topToolBox.SetData(toolbarModel); topToolBox.Initialize(); diff --git a/Assets/Scripts/UI/ProjectListController.cs b/Assets/Scripts/UI/ProjectListController.cs index b8378849..c751ba8b 100644 --- a/Assets/Scripts/UI/ProjectListController.cs +++ b/Assets/Scripts/UI/ProjectListController.cs @@ -143,7 +143,7 @@ namespace OCTOPUS_TWIN } private void SetActiveProgjectDataObject(Transform parent, string targetName, bool isOn) { - Transform targetModel = parent.Find(targetName); + Transform targetModel = FindInChildren(parent, targetName); if (targetModel != null) { @@ -154,6 +154,15 @@ namespace OCTOPUS_TWIN Debug.LogError($"'{parent.name}' Ʒ '{targetName}' Ʈ ã ϴ. ̸ Ȯּ."); } } + private Transform FindInChildren(Transform parent, string name) + { + foreach (Transform child in parent.GetComponentsInChildren(true)) + { + if (child.name == name) + return child; + } + return null; + } public void ReturnHome() { diff --git a/Assets/Scripts/UI/UICanvas.cs b/Assets/Scripts/UI/UICanvas.cs index 7c766149..81a1b4f5 100644 --- a/Assets/Scripts/UI/UICanvas.cs +++ b/Assets/Scripts/UI/UICanvas.cs @@ -50,6 +50,13 @@ namespace UVC.UI break; } } + public void ClosePanel() + { + foreach(var panel in panels) + { + panel.Close(); + } + } public async UniTask LoadPanel(Transform parent = null) where T : UIPanel {