From a7a9ff1c2e4eb635ad381623df5a49233160e4b5 Mon Sep 17 00:00:00 2001 From: UVCLimHun Date: Tue, 15 Jul 2025 18:20:51 +0900 Subject: [PATCH] =?UTF-8?q?UI=EC=A0=81=EC=9A=A9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Assets/Prefabs/Canvas_Bubble.prefab | 116 +++++++++++ Assets/Prefabs/Canvas_Bubble.prefab.meta | 7 + Assets/Resources/BubbleUI.prefab | 31 ++- Assets/Scenes/Simulation_0.0.1.unity | 222 +++++++++++----------- Assets/WorkSpace/LH/LogicData/BubbleUI.cs | 13 +- Assets/시뮬레이터 말풍선.png | Bin 0 -> 6599 bytes Assets/시뮬레이터 말풍선.png.meta | 130 +++++++++++++ 7 files changed, 391 insertions(+), 128 deletions(-) create mode 100644 Assets/Prefabs/Canvas_Bubble.prefab create mode 100644 Assets/Prefabs/Canvas_Bubble.prefab.meta create mode 100644 Assets/시뮬레이터 말풍선.png create mode 100644 Assets/시뮬레이터 말풍선.png.meta diff --git a/Assets/Prefabs/Canvas_Bubble.prefab b/Assets/Prefabs/Canvas_Bubble.prefab new file mode 100644 index 00000000..ca4da47b --- /dev/null +++ b/Assets/Prefabs/Canvas_Bubble.prefab @@ -0,0 +1,116 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &8420402263273778880 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 7289980099251118275} + - component: {fileID: 1534568841013689469} + - component: {fileID: 4622237747080482242} + - component: {fileID: 914860808803634161} + - component: {fileID: 2018036139530224434} + m_Layer: 5 + m_Name: Canvas_Bubble + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &7289980099251118275 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8420402263273778880} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0, y: 0, z: 0} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0, y: 0} +--- !u!223 &1534568841013689469 +Canvas: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8420402263273778880} + m_Enabled: 1 + serializedVersion: 3 + m_RenderMode: 0 + m_Camera: {fileID: 0} + m_PlaneDistance: 100 + m_PixelPerfect: 0 + m_ReceivesEvents: 1 + m_OverrideSorting: 0 + m_OverridePixelPerfect: 0 + m_SortingBucketNormalizedSize: 0 + m_VertexColorAlwaysGammaSpace: 0 + m_AdditionalShaderChannelsFlag: 25 + m_UpdateRectTransformForStandalone: 0 + m_SortingLayerID: 0 + m_SortingOrder: -1 + m_TargetDisplay: 0 +--- !u!114 &4622237747080482242 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8420402263273778880} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 0cd44c1031e13a943bb63640046fad76, type: 3} + m_Name: + m_EditorClassIdentifier: + m_UiScaleMode: 0 + m_ReferencePixelsPerUnit: 100 + m_ScaleFactor: 1 + m_ReferenceResolution: {x: 800, y: 600} + m_ScreenMatchMode: 0 + m_MatchWidthOrHeight: 0 + m_PhysicalUnit: 3 + m_FallbackScreenDPI: 96 + m_DefaultSpriteDPI: 96 + m_DynamicPixelsPerUnit: 1 + m_PresetInfoIsWorld: 0 +--- !u!114 &914860808803634161 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8420402263273778880} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: dc42784cf147c0c48a680349fa168899, type: 3} + m_Name: + m_EditorClassIdentifier: + m_IgnoreReversedGraphics: 1 + m_BlockingObjects: 0 + m_BlockingMask: + serializedVersion: 2 + m_Bits: 4294967295 +--- !u!114 &2018036139530224434 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8420402263273778880} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 231eeea68d16664439d7f9a821a40c14, type: 3} + m_Name: + m_EditorClassIdentifier: diff --git a/Assets/Prefabs/Canvas_Bubble.prefab.meta b/Assets/Prefabs/Canvas_Bubble.prefab.meta new file mode 100644 index 00000000..92fbf0d2 --- /dev/null +++ b/Assets/Prefabs/Canvas_Bubble.prefab.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 3cc977598920510408290e6c59f79050 +PrefabImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Resources/BubbleUI.prefab b/Assets/Resources/BubbleUI.prefab index 588b0363..0541b8e4 100644 --- a/Assets/Resources/BubbleUI.prefab +++ b/Assets/Resources/BubbleUI.prefab @@ -34,8 +34,8 @@ RectTransform: 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_AnchoredPosition: {x: 0, y: 5} + m_SizeDelta: {x: 0, y: -10} m_Pivot: {x: 0.5, y: 0.5} --- !u!222 &7495036409506831421 CanvasRenderer: @@ -65,7 +65,7 @@ MonoBehaviour: m_OnCullStateChanged: m_PersistentCalls: m_Calls: [] - m_text: New Text + m_text: 10 m_isRightToLeft: 0 m_fontAsset: {fileID: 11400000, guid: 05bae3109f77490458ea729d51e7df78, type: 2} m_sharedMaterial: {fileID: -7290017371581542385, guid: 05bae3109f77490458ea729d51e7df78, type: 2} @@ -74,8 +74,8 @@ MonoBehaviour: m_fontMaterials: [] m_fontColor32: serializedVersion: 2 - rgba: 4278190080 - m_fontColor: {r: 0, g: 0, b: 0, a: 1} + rgba: 4278190335 + m_fontColor: {r: 1, g: 0, b: 0, a: 1} m_enableVertexGradient: 0 m_colorMode: 3 m_fontColorGradient: @@ -92,8 +92,8 @@ MonoBehaviour: m_faceColor: serializedVersion: 2 rgba: 4294967295 - m_fontSize: 18 - m_fontSizeBase: 18 + m_fontSize: 12 + m_fontSizeBase: 12 m_fontWeight: 400 m_enableAutoSizing: 0 m_fontSizeMin: 18 @@ -148,6 +148,7 @@ GameObject: - component: {fileID: 5476817062972023011} - component: {fileID: 3649460406689858812} - component: {fileID: -539001808304557592} + - component: {fileID: -7738697818567212645} m_Layer: 5 m_Name: BubbleUI m_TagString: Untagged @@ -173,7 +174,7 @@ RectTransform: m_AnchorMin: {x: 0.5, y: 0.5} m_AnchorMax: {x: 0.5, y: 0.5} m_AnchoredPosition: {x: 0, y: 0} - m_SizeDelta: {x: 60, y: 15} + m_SizeDelta: {x: 45.8, y: 44.4} m_Pivot: {x: 0.5, y: 0.5} --- !u!222 &5476817062972023011 CanvasRenderer: @@ -203,7 +204,7 @@ MonoBehaviour: m_OnCullStateChanged: m_PersistentCalls: m_Calls: [] - m_Sprite: {fileID: 0} + m_Sprite: {fileID: 21300000, guid: 7e796835dcd107e4483d6033892cb3ed, type: 3} m_Type: 0 m_PreserveAspect: 0 m_FillCenter: 1 @@ -228,3 +229,15 @@ MonoBehaviour: target: {fileID: 0} worldOffset: {x: 0, y: 0, z: 0} messageText: {fileID: 2959744261684156557} +--- !u!225 &-7738697818567212645 +CanvasGroup: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7932083815135180818} + m_Enabled: 1 + m_Alpha: 1 + m_Interactable: 1 + m_BlocksRaycasts: 1 + m_IgnoreParentGroups: 0 diff --git a/Assets/Scenes/Simulation_0.0.1.unity b/Assets/Scenes/Simulation_0.0.1.unity index d239065e..5cd7f476 100644 --- a/Assets/Scenes/Simulation_0.0.1.unity +++ b/Assets/Scenes/Simulation_0.0.1.unity @@ -4889,6 +4889,15 @@ MonoBehaviour: _name: Orbit _staticData: CanHaveMouseButtons: 1 + _cameraLimitSetting: + _canBeDisplayed: 1 + _isExpanded: 1 + minX: -100 + maxX: 100 + minY: 0 + maxY: 100 + minZ: -100 + maxZ: 100 --- !u!1 &602269597 GameObject: m_ObjectHideFlags: 0 @@ -7192,52 +7201,6 @@ PrefabInstance: m_AddedGameObjects: [] m_AddedComponents: [] m_SourcePrefab: {fileID: 100100000, guid: 1cebdf9f041a0384bbb02ecc4e1238f1, type: 3} ---- !u!223 &2529817239856315941 -Canvas: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 4760947842828523471} - m_Enabled: 1 - serializedVersion: 3 - m_RenderMode: 0 - m_Camera: {fileID: 0} - m_PlaneDistance: 100 - m_PixelPerfect: 0 - m_ReceivesEvents: 1 - m_OverrideSorting: 0 - m_OverridePixelPerfect: 0 - m_SortingBucketNormalizedSize: 0 - m_VertexColorAlwaysGammaSpace: 0 - m_AdditionalShaderChannelsFlag: 25 - m_UpdateRectTransformForStandalone: 0 - m_SortingLayerID: 0 - m_SortingOrder: 0 - m_TargetDisplay: 0 ---- !u!114 &2685314929796272503 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 4760947842828523471} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 0cd44c1031e13a943bb63640046fad76, type: 3} - m_Name: - m_EditorClassIdentifier: - m_UiScaleMode: 0 - m_ReferencePixelsPerUnit: 100 - m_ScaleFactor: 1 - m_ReferenceResolution: {x: 800, y: 600} - m_ScreenMatchMode: 0 - m_MatchWidthOrHeight: 0 - m_PhysicalUnit: 3 - m_FallbackScreenDPI: 96 - m_DefaultSpriteDPI: 96 - m_DynamicPixelsPerUnit: 1 - m_PresetInfoIsWorld: 0 --- !u!223 &3323266167456856314 Canvas: m_ObjectHideFlags: 0 @@ -7261,43 +7224,103 @@ Canvas: m_SortingLayerID: 0 m_SortingOrder: 0 m_TargetDisplay: 0 ---- !u!114 &4620232720879882520 -MonoBehaviour: +--- !u!1001 &5191713448394799192 +PrefabInstance: m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 4760947842828523471} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: dc42784cf147c0c48a680349fa168899, type: 3} - m_Name: - m_EditorClassIdentifier: - m_IgnoreReversedGraphics: 1 - m_BlockingObjects: 0 - m_BlockingMask: - serializedVersion: 2 - m_Bits: 4294967295 ---- !u!1 &4760947842828523471 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 8860177285577185643} - - component: {fileID: 2529817239856315941} - - component: {fileID: 2685314929796272503} - - component: {fileID: 4620232720879882520} - - component: {fileID: 8860177285577185644} - m_Layer: 5 - m_Name: Canvas_Bubble - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 + serializedVersion: 2 + m_Modification: + serializedVersion: 3 + m_TransformParent: {fileID: 0} + m_Modifications: + - target: {fileID: 7289980099251118275, guid: 3cc977598920510408290e6c59f79050, type: 3} + propertyPath: m_Pivot.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7289980099251118275, guid: 3cc977598920510408290e6c59f79050, type: 3} + propertyPath: m_Pivot.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7289980099251118275, guid: 3cc977598920510408290e6c59f79050, type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7289980099251118275, guid: 3cc977598920510408290e6c59f79050, type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7289980099251118275, guid: 3cc977598920510408290e6c59f79050, type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7289980099251118275, guid: 3cc977598920510408290e6c59f79050, type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7289980099251118275, guid: 3cc977598920510408290e6c59f79050, type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7289980099251118275, guid: 3cc977598920510408290e6c59f79050, type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7289980099251118275, guid: 3cc977598920510408290e6c59f79050, type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7289980099251118275, guid: 3cc977598920510408290e6c59f79050, type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7289980099251118275, guid: 3cc977598920510408290e6c59f79050, type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7289980099251118275, guid: 3cc977598920510408290e6c59f79050, type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 7289980099251118275, guid: 3cc977598920510408290e6c59f79050, type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7289980099251118275, guid: 3cc977598920510408290e6c59f79050, type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7289980099251118275, guid: 3cc977598920510408290e6c59f79050, type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7289980099251118275, guid: 3cc977598920510408290e6c59f79050, type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7289980099251118275, guid: 3cc977598920510408290e6c59f79050, type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7289980099251118275, guid: 3cc977598920510408290e6c59f79050, type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7289980099251118275, guid: 3cc977598920510408290e6c59f79050, type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7289980099251118275, guid: 3cc977598920510408290e6c59f79050, type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8420402263273778880, guid: 3cc977598920510408290e6c59f79050, type: 3} + propertyPath: m_Name + value: Canvas_Bubble + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_RemovedGameObjects: [] + m_AddedGameObjects: [] + m_AddedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 3cc977598920510408290e6c59f79050, type: 3} --- !u!1001 &6579092525594939345 PrefabInstance: m_ObjectHideFlags: 0 @@ -7460,7 +7483,7 @@ PrefabInstance: objectReference: {fileID: 0} - target: {fileID: 4141025361698125247, guid: ea4abd0239cb35e47914f9614cf08d69, type: 3} propertyPath: m_AnchoredPosition.x - value: -1017.1 + value: -1081.1 objectReference: {fileID: 0} - target: {fileID: 4141025361698125247, guid: ea4abd0239cb35e47914f9614cf08d69, type: 3} propertyPath: m_AnchoredPosition.y @@ -7830,37 +7853,6 @@ MonoBehaviour: m_BlockingMask: serializedVersion: 2 m_Bits: 4294967295 ---- !u!224 &8860177285577185643 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 4760947842828523471} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 0, y: 0, z: 0} - m_LocalScale: {x: 0, y: 0, z: 0} - m_ConstrainProportionsScale: 0 - m_Children: [] - m_Father: {fileID: 0} - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0, y: 0} - m_AnchorMax: {x: 0, y: 0} - m_AnchoredPosition: {x: 0, y: 0} - m_SizeDelta: {x: 0, y: 0} - m_Pivot: {x: 0, y: 0} ---- !u!114 &8860177285577185644 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 4760947842828523471} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 231eeea68d16664439d7f9a821a40c14, type: 3} - m_Name: - m_EditorClassIdentifier: --- !u!1 &8977033083733586462 GameObject: m_ObjectHideFlags: 0 @@ -7887,7 +7879,7 @@ SceneRoots: m_Roots: - {fileID: 1872009199} - {fileID: 1661135200126774734} - - {fileID: 8860177285577185643} + - {fileID: 5191713448394799192} - {fileID: 1916153470} - {fileID: 1899099861} - {fileID: 602269599} diff --git a/Assets/WorkSpace/LH/LogicData/BubbleUI.cs b/Assets/WorkSpace/LH/LogicData/BubbleUI.cs index b6ae499d..6d213a7a 100644 --- a/Assets/WorkSpace/LH/LogicData/BubbleUI.cs +++ b/Assets/WorkSpace/LH/LogicData/BubbleUI.cs @@ -8,11 +8,14 @@ public class BubbleUI : MonoBehaviour public TMP_Text messageText; // Text Ʈ Camera mainCam; RectTransform rt; + CanvasGroup cg; void Awake() { mainCam = Camera.main; rt = GetComponent(); + cg = GetComponent(); + if (cg == null) cg = gameObject.AddComponent(); } void Update() @@ -22,16 +25,18 @@ public class BubbleUI : MonoBehaviour Destroy(gameObject); return; } - // ǥ ũ ǥ ȯ Vector3 screenPos = mainCam.WorldToScreenPoint(target.position + worldOffset); - // þ ( z) if (screenPos.z < 0) { - rt.gameObject.SetActive(false); + cg.alpha = 0; + cg.blocksRaycasts = false; + cg.interactable = false; } else { - rt.gameObject.SetActive(true); + cg.alpha = 1; + cg.blocksRaycasts = true; + cg.interactable = true; rt.position = screenPos; } } diff --git a/Assets/시뮬레이터 말풍선.png b/Assets/시뮬레이터 말풍선.png new file mode 100644 index 0000000000000000000000000000000000000000..3542d4338284d08818d60d5f20f68c12e0bf2756 GIT binary patch literal 6599 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