From 3c62a253b72e69e2deb1149ea4bacd40abfcdf63 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, 25 Feb 2025 10:23:33 +0900 Subject: [PATCH] =?UTF-8?q?=EC=84=A4=EB=B9=84=20KPI=20UI=20=EA=B0=80?= =?UTF-8?q?=EC=8B=9C=EC=84=B1=20=EA=B0=9C=EC=84=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Assets/Images/UI/Group 1000005075.png | Bin 3853 -> 0 bytes Assets/Images/UI/IMG_DefaultKPI.png | Bin 0 -> 1139 bytes ...05075.png.meta => IMG_DefaultKPI.png.meta} | 2 +- Assets/Images/UI/IMG_DetailsKPI.png | Bin 0 -> 1688 bytes Assets/Images/UI/IMG_DetailsKPI.png.meta | 153 + Assets/Images/UI/IMG_KPI_1.png | Bin 0 -> 317 bytes Assets/Images/UI/IMG_KPI_1.png.meta | 153 + Assets/Images/UI/IMG_KPI_2.png | Bin 0 -> 295 bytes Assets/Images/UI/IMG_KPI_2.png.meta | 153 + .../GenericController/GenericController.cs | 2 - .../Prefabs/UI/PRF_UI_MachineKPI.prefab | 2842 +++++++++-------- Assets/Scenes/Main.unity | 80 + Assets/UI_MachineKPI.prefab | 1957 ++++++++++++ Assets/UI_MachineKPI.prefab.meta | 7 + .../Personal/JYM/MachineKPIManager.cs | 27 + .../WorkSpace/Personal/JYM/UI_MachineKPI.cs | 216 +- 16 files changed, 4121 insertions(+), 1471 deletions(-) delete mode 100644 Assets/Images/UI/Group 1000005075.png create mode 100644 Assets/Images/UI/IMG_DefaultKPI.png rename Assets/Images/UI/{Group 1000005075.png.meta => IMG_DefaultKPI.png.meta} (98%) create mode 100644 Assets/Images/UI/IMG_DetailsKPI.png create mode 100644 Assets/Images/UI/IMG_DetailsKPI.png.meta create mode 100644 Assets/Images/UI/IMG_KPI_1.png create mode 100644 Assets/Images/UI/IMG_KPI_1.png.meta create mode 100644 Assets/Images/UI/IMG_KPI_2.png create mode 100644 Assets/Images/UI/IMG_KPI_2.png.meta create mode 100644 Assets/UI_MachineKPI.prefab create mode 100644 Assets/UI_MachineKPI.prefab.meta diff --git a/Assets/Images/UI/Group 1000005075.png b/Assets/Images/UI/Group 1000005075.png deleted file mode 100644 index f1e1b6bdeed18815b477d54f7c9de30ee8c643f8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3853 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 Tt1A45UI7-S)+UukPO<+3CK`D% diff --git a/Assets/Images/UI/IMG_DefaultKPI.png b/Assets/Images/UI/IMG_DefaultKPI.png new file mode 100644 index 0000000000000000000000000000000000000000..75f24e27c85954050f4d22f71b7c81b7bd72e1d6 GIT binary patch literal 1139 zcmeAS@N?(olHy`uVBq!ia0y~yU^D@;3pm(-mJUvBDfxUqLfsX6+vR9I~)_U(P&0MbM`&}tmt@M;bC=qni`1ytkb6aMiXX z$qwbZAAcEsc`9+{*Y9!f$~wg?DMk|K84OErcI>g^l9*u?1DUN>iL6Wn6Y?ZAJOw`qOSj96XEaDPUIFF~~`pR?A~zhZvI zx?uUM&reHpUawC(^6T>ohA&rMT|5(LJ^%dKa}D=i?|QdG&(cz@VB4CS%jn^Bp}~ZO*TZ=vQj2qErG+t6t=qQd+=YAM4fCRP z#4eZZjM=BnU@LCC<@2s5GU5&YW^eiYvnGh4N^jbn$5p(!Z;mlsNH2W(#-?rcf~)5H zfx4pNt+K=3v*+Ia7t2tkF>SVf(u{TcBci9zNy~JQ-`kZN6(3`-DbQ+Ntjqgia@E^4 z+p_=e+r9C`@gz3>l}AyiWIIccj|vE z&!23wNr$y8^s(sS-!G2u{?#q{^zf<=j`rE#^tC!!TZ8U-)d0%~22WQ%mvv4FO#m`M B@m~M{ literal 0 HcmV?d00001 diff --git a/Assets/Images/UI/Group 1000005075.png.meta b/Assets/Images/UI/IMG_DefaultKPI.png.meta similarity index 98% rename from Assets/Images/UI/Group 1000005075.png.meta rename to Assets/Images/UI/IMG_DefaultKPI.png.meta index 4ef1e5cf..431bb1f8 100644 --- a/Assets/Images/UI/Group 1000005075.png.meta +++ b/Assets/Images/UI/IMG_DefaultKPI.png.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 2f06cd1262ac5414185f7897b2d543be +guid: 9aa8184c1a04bee43a1de58921a5ca09 TextureImporter: internalIDToNameTable: [] externalObjects: {} diff --git a/Assets/Images/UI/IMG_DetailsKPI.png b/Assets/Images/UI/IMG_DetailsKPI.png new file mode 100644 index 0000000000000000000000000000000000000000..ef7325c5d7837fb38cd7b6d869238ad5a2d78ec8 GIT binary patch literal 1688 zcmeAS@N?(olHy`uVBq!ia0y~yU^D?@Ar3a6NO6hg79ho0;1OBOz`!jG!i)^F=12eq z8H6cyN6U8o7Oo7S>AUU3l=GU@mUqJ$V*sW0jT7r^6dY`D*cArlB?DF zzM0QIf999xt-FQa=YB8SI%`YxuJZTy{=9gRQEfEyOn-mB{5ALZD;C)d<^jAn*C(z& zR(^HL-Ipc1ENpCIwnWd^GJ7WP;SX#6eKh{aWH(iAd)ApnOxuI=zptykXWIW-u{!SY zX10RuadGB3^1M;L|ErG7n>~?nzW4l%S2t{q(fhya)sB~;*4bg-VtH%R%JwtX*ws3H zU2@25^~tNRPxI}{X){|r^JahPqdkl{6JA})%hiAN^xw}~akjNd-=gPkxXWM`yg%{7 zqd)Ecql?x}o9Qog;MuKR89#r{UvTxzn@ryOCJkr5uTV?)ExOhGHGiA2_4Zrs(hLmA z7iX9L;_bOCc`Iw>OEm@qweQ(4E9>`uiMcOwW7UGcHyPYk+>*XiJe(DPx74oYOHWD=Yw^+L({!Y3mIDkOcdG{FdDM(b|_{z@HjFjaYzX` zUuckMVmmS_H5wWtG;Oq)snY%?|Tws z((v)N?6lKQ^MDyEsz~pb>6TV$<^waXF5O&iI)`QL{-1jpd#?PtbTj2^of*&J`@9J) zSv!AjY1{i%Jp1>g%R0Ogi>GgW`&E3oKUc`ZvKVjXV@u+#U%!poKY!lM@&Idot*n0O z0~{fn>sCFS|MmCFoqzMSGB!)en>O%<8E>we`R4lO`M!Eq8}bDH1RVyJNDF4oe0%NN z*PrK?PnY?#s_nRG^zTiKIn!KCU)`4CKlgq{T#=Lg2maIk36sC1rX79LUgmga*UM1# z>z(VfUvGDoU-yWu;Q1=&-&_C2=$EgvdUtBU+Arz0@oSs5-DP-p;nk!6-?!F&X*W@O zo3`y$+riITPxml=U%*(yv|2KfKl1*%zkhGcW_!D)^61+8oOjpN?+Ja(d^+gCvZ_5< q74d&7Zr2+wu8k1A_bUDDKUUvxwv&q`L>B`q5(ZCKKbLh*2~7akiG;xb literal 0 HcmV?d00001 diff --git a/Assets/Images/UI/IMG_DetailsKPI.png.meta b/Assets/Images/UI/IMG_DetailsKPI.png.meta new file mode 100644 index 00000000..c383a49d --- /dev/null +++ b/Assets/Images/UI/IMG_DetailsKPI.png.meta @@ -0,0 +1,153 @@ +fileFormatVersion: 2 +guid: 0750312642053cb4dbbe98ff7650f885 +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 12 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + flipGreenChannel: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + vTOnly: 0 + ignoreMipmapLimit: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: 1 + aniso: 1 + mipBias: 0 + wrapU: 1 + wrapV: 1 + wrapW: 0 + nPOTScale: 0 + lightmap: 0 + compressionQuality: 50 + spriteMode: 1 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 100 + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 1 + alphaIsTransparency: 1 + spriteTessellationDetail: -1 + textureType: 8 + textureShape: 1 + singleChannelComponent: 0 + flipbookRows: 1 + flipbookColumns: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + ignorePngGamma: 0 + applyGammaDecoding: 0 + swizzle: 50462976 + cookieLightType: 0 + platformSettings: + - serializedVersion: 3 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: WebGL + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Standalone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Android + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Server + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: 5e97eb03825dee720800000000000000 + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + nameFileIdTable: {} + mipmapLimitGroupName: + pSDRemoveMatte: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Images/UI/IMG_KPI_1.png b/Assets/Images/UI/IMG_KPI_1.png new file mode 100644 index 0000000000000000000000000000000000000000..284edcba56bf91c8ff7e221ae1eab22589a9bb27 GIT binary patch literal 317 zcmeAS@N?(olHy`uVBq!ia0vp^1wgF9!3HGNZ0jxpDb50q$YKTtZeb8+WSBKa0w~B> z9OUlAuv0H>Ftr) zhP!Rv2U=2ETBbP2HcZf9$*K@7kV)+^iQjUoWJ|QX zdArcn9O*K5xAj)k3kEIyzx{{V!K^I7S&R>PIMN*~m=8$`oNFjxYcW=sL$1&r?FTZB zUw4LX>Yq^c>O z9OUlAu{=G|mj^Db_=>6Bf zeVXyCZ>2IdJadJ#t1x=Yie=vBu`njxgN@xNATH matchingMachines = new(); private SDictionary machineKPIs = new(); + private UI_MachineKPI current_MachineKPI; + public float defaultNameHeight; public float radius; public Vector3 originScale; @@ -39,6 +41,7 @@ namespace CHN var machineKPI = Instantiate(prefab_MachineKPI, transform); machineKPI.SetData(data); + machineKPI.onClickKPI += OnClickMachineKPI; machineKPI.name = data.workcd; machineKPIs.Add(data.workcd, machineKPI); @@ -59,10 +62,34 @@ namespace CHN } } } + private void OnClickMachineKPI(UI_MachineKPI machineKPI) + { + if (current_MachineKPI != null) + { + current_MachineKPI.Shrink(); + } + current_MachineKPI = machineKPI; + current_MachineKPI.Expand(); + } private void Update() { SettingPos(); RangeDetection(); + RectangleContainsPoint(); + } + private void RectangleContainsPoint() + { + if (Input.GetMouseButton(0)) + { + if (current_MachineKPI == null) + return; + + if(!RectTransformUtility.RectangleContainsScreenPoint(current_MachineKPI.DetailsKPI, Input.mousePosition)) + { + current_MachineKPI.Shrink(); + current_MachineKPI = null; + } + } } bool Test(Machine machine) { diff --git a/Assets/WorkSpace/Personal/JYM/UI_MachineKPI.cs b/Assets/WorkSpace/Personal/JYM/UI_MachineKPI.cs index 204069f2..23e95066 100644 --- a/Assets/WorkSpace/Personal/JYM/UI_MachineKPI.cs +++ b/Assets/WorkSpace/Personal/JYM/UI_MachineKPI.cs @@ -5,47 +5,48 @@ using UnityEngine.UI; using TMPro; using UnityEngine.EventSystems; using WI; +using System; -public class UI_MachineKPI : UIBase, IPointerEnterHandler, IPointerExitHandler +public class UI_MachineKPI : UIBase, IPointerClickHandler { - public Image Image_eorate; - public Image Image_RectMask; - public Image Image_Name; - public TextMeshProUGUI Text_eorate; - public TextMeshProUGUI Text_lct; - public TextMeshProUGUI Text_wct; - public TextMeshProUGUI Text_goodqtyrate; - public TextMeshProUGUI Text_porate; + public RectTransform DefaultKPI; + public RectTransform DetailsKPI; - private float originScaleValue; - private float eorate; - private float timer; - private bool isRotating; + private TextMeshProUGUI Default_eorate; + private TextMeshProUGUI Details_eorate; + private TextMeshProUGUI porate; + private TextMeshProUGUI goodqtyrate; + private TextMeshProUGUI lct; + private TextMeshProUGUI wct; public bool isExpand; - public float duration; - public float pauseTimer; + private float eorate; + + public float targetHeight; + public float duration; + + private float initialHeight; + private Vector2 initialSizeDelta; + private Vector2 initialPosition; + + public Action onClickKPI; - public float dataExpandScale; - public float dataReductionScale; - public float nameExpandScale; - public float nameReductionScale; - public float nameExpandPos; - public float nameReductionPos; public void SetData(KPIData kpiData) { eorate = DecimalPointCalculate(kpiData.eorate); - Text_eorate.SetText(eorate.ToString()); - Text_lct.SetText(DecimalPointCalculate(kpiData.lct).ToString()); - Text_wct.SetText(DecimalPointCalculate(kpiData.wct).ToString()); - Text_goodqtyrate.SetText(DecimalPointCalculate(kpiData.goodqtyrate).ToString()); - Text_porate.SetText(DecimalPointCalculate(kpiData.porate).ToString()); + Default_eorate.SetText(eorate.ToString()); + Details_eorate.SetText(eorate.ToString()); + lct.SetText(DecimalPointCalculate(kpiData.lct).ToString()); + wct.SetText(DecimalPointCalculate(kpiData.wct).ToString()); + goodqtyrate.SetText(DecimalPointCalculate(kpiData.goodqtyrate).ToString()); + porate.SetText(DecimalPointCalculate(kpiData.porate).ToString()); - Image_eorate.color = eorate >= 50f ? Color.green : Color.red; + initialSizeDelta = DetailsKPI.sizeDelta; + initialPosition = DetailsKPI.anchoredPosition; + initialHeight = DetailsKPI.rect.height; - timer = pauseTimer; - originScaleValue = rectTransform.localScale.x; + DetailsKPI.gameObject.SetActive(false); } private float DecimalPointCalculate(string value) { @@ -54,125 +55,86 @@ public class UI_MachineKPI : UIBase, IPointerEnterHandler, IPointerExitHandler return floatValue; } - public void Active() + + IEnumerator ResizeCoroutine() { - gameObject.SetActive(true); + DefaultKPI.gameObject.SetActive(false); + DetailsKPI.gameObject.SetActive(true); - if (!isRotating) + var elapsedTime = 0f; + + while (elapsedTime < duration) { - float rotationAmount = -eorate * Time.deltaTime; - Image_eorate.transform.Rotate(new Vector3(0, 0, rotationAmount)); + var progress = elapsedTime / duration; - if (Mathf.Abs(Image_eorate.transform.rotation.eulerAngles.z) <= 180) - { - Image_eorate.transform.localRotation = Quaternion.Euler(Vector3.zero); - isRotating = true; - timer = pauseTimer; - } + var newHeight = Mathf.Lerp(initialHeight, targetHeight, progress); + DetailsKPI.sizeDelta = new Vector2(initialSizeDelta.x, newHeight); + + var newPosY = Mathf.Lerp(initialPosition.y, initialPosition.y - (targetHeight - initialHeight) / 2f, progress); + DetailsKPI.anchoredPosition = new Vector2(initialPosition.x, newPosY); + + elapsedTime += Time.deltaTime; + yield return null; } - else - { - timer -= Time.deltaTime; - - if (timer <= 0) - { - isRotating = false; - } - } - } - public void Deactive() - { - var originalScale = Image_RectMask.rectTransform.sizeDelta; - var originalNameScale = Image_Name.rectTransform.sizeDelta; - var originalNamePos = Image_Name.rectTransform.localPosition; - - var targetScale = new Vector2(0f, originalScale.y); - var targetNameScale = new Vector2(originalNameScale.x, 0f); - - var targetNamePos = new Vector3(originalNamePos.x, 0f, originalNamePos.z); - - Image_RectMask.rectTransform.sizeDelta = targetScale; - Image_Name.rectTransform.sizeDelta = targetNameScale; - Image_Name.rectTransform.localPosition = targetNamePos; - - gameObject.SetActive(false); + DetailsKPI.sizeDelta = new Vector2(initialSizeDelta.x, targetHeight); + DetailsKPI.anchoredPosition = new Vector2(initialPosition.x, initialPosition.y - (targetHeight - initialHeight) / 2f); } - public void OnPointerEnter(PointerEventData eventData) + IEnumerator ShrinkCoroutine() { - var expandAbleScale = originScaleValue / 8f; + var elapsedTime = 0f; + var currentHeight = DetailsKPI.rect.height; + var currentPosY = DetailsKPI.anchoredPosition.y; + while (elapsedTime < duration) + { + var progress = elapsedTime / duration; + + var newHeight = Mathf.Lerp(currentHeight, initialHeight, progress); + DetailsKPI.sizeDelta = new Vector2(initialSizeDelta.x, newHeight); + + var newPosY = Mathf.Lerp(currentPosY, initialPosition.y, progress); + DetailsKPI.anchoredPosition = new Vector2(initialPosition.x, newPosY); + + elapsedTime += Time.deltaTime; + yield return null; + } + + DetailsKPI.sizeDelta = new Vector2(initialSizeDelta.x, initialHeight); + DetailsKPI.anchoredPosition = new Vector2(initialPosition.x, initialPosition.y); + + DefaultKPI.gameObject.SetActive(true); + DetailsKPI.gameObject.SetActive(false); + } + public void OnPointerClick(PointerEventData eventData) + { + onClickKPI?.Invoke(this); + } + public void Expand() + { if (!isExpand) { - if (rectTransform.localScale.x > expandAbleScale) - { - isRotating = false; - timer = 0.0f; - - StopAllCoroutines(); - StartCoroutine(ExpandAnimation()); - isExpand = true; - } + StopAllCoroutines(); + StartCoroutine(ResizeCoroutine()); + isExpand = true; } } - - public void OnPointerExit(PointerEventData eventData) + public void Shrink() { if (isExpand) { StopAllCoroutines(); - StartCoroutine(ReductionAnimation()); + StartCoroutine(ShrinkCoroutine()); + isExpand = false; } } - private IEnumerator ExpandAnimation() + public void Active() { - var originalScale = Image_RectMask.rectTransform.sizeDelta; - var originalNameScale = Image_Name.rectTransform.sizeDelta; - var originalNamePos = Image_Name.rectTransform.localPosition; - - var targetScale = new Vector2(dataExpandScale, originalScale.y); - var targetNameScale = new Vector2(originalNameScale.x, nameExpandScale); - var targetNamePos = new Vector3(originalNamePos.x, nameExpandPos, originalNamePos.z); - - float elapsedTime = 0f; - - while (elapsedTime < duration) - { - var progress = elapsedTime / duration; - Image_RectMask.rectTransform.sizeDelta = Vector2.Lerp(originalScale, targetScale, progress); - Image_Name.rectTransform.sizeDelta = Vector2.Lerp(originalNameScale, targetNameScale, progress); - Image_Name.rectTransform.localPosition = Vector3.Lerp(originalNamePos, targetNamePos, progress); - elapsedTime += Time.deltaTime; - yield return null; - } - Image_RectMask.rectTransform.sizeDelta = targetScale; - Image_Name.rectTransform.sizeDelta = targetNameScale; - Image_Name.rectTransform.localPosition = targetNamePos; + gameObject.SetActive(true); } - private IEnumerator ReductionAnimation() + public void Deactive() { - var originalScale = Image_RectMask.rectTransform.sizeDelta; - var originalNameScale = Image_Name.rectTransform.sizeDelta; - var originalNamePos = Image_Name.rectTransform.localPosition; - - var targetScale = new Vector2(dataReductionScale, originalScale.y); - var targetNameScale = new Vector2(originalNameScale.x, nameReductionScale); - var targetNamePos = new Vector3(originalNamePos.x, nameReductionPos, originalNamePos.z); - - float elapsedTime = 0f; - - while (elapsedTime < duration) - { - var progress = elapsedTime / duration; - Image_RectMask.rectTransform.sizeDelta = Vector2.Lerp(originalScale, targetScale, progress); - Image_Name.rectTransform.sizeDelta = Vector2.Lerp(originalNameScale, targetNameScale, progress); - Image_Name.rectTransform.localPosition = Vector3.Lerp(originalNamePos, targetNamePos, progress); - elapsedTime += Time.deltaTime; - yield return null; - } - Image_RectMask.rectTransform.sizeDelta = targetScale; - Image_Name.rectTransform.sizeDelta = targetNameScale; - Image_Name.rectTransform.localPosition = targetNamePos; + gameObject.SetActive(false); } -} +} \ No newline at end of file