미니맵 크기 최소화/최대화

This commit is contained in:
jmaniuvc
2025-05-21 14:46:44 +09:00
parent dde6c81a56
commit 53821f28b1
3 changed files with 636 additions and 135 deletions

View File

@@ -13,11 +13,20 @@ namespace XED.UI
{
Camera target;
Button Button_Maximize;
Button Button_Minimize;
RectTransform rect;
RectTransform HeaderArea;
RectTransform MiniMapScreenMask;
RectTransform HeightSelectBar;
Slider ZoomSlider;
RectTransform MiniMapScreen;
RectTransform Image_MiniMapIcon;
RectTransform HeightSelectBar;
RectTransform MiniMapHeightButtons;
Slider ZoomSlider;
RectMask2D rectMask2D;
Vector2 worldMin;
Vector2 worldMax;
@@ -36,18 +45,33 @@ namespace XED.UI
public Dictionary<UI_MiniMapHeightButton, Texture2D> capturedImages = new();
private float lastClickTime = 0f;
private float doubleClickThreshold = 0.3f;
float lastClickTime = 0f;
float doubleClickThreshold = 0.3f;
bool isMaximize;
bool isMinimize;
public Vector2 sizeDelta;
public Vector2 anchoredPos;
public override void AfterAwake()
{
rect = GetComponent<RectTransform>();
rectMask2D = GetComponent<RectMask2D>();
rectMask2D.enabled = false;
miniMapHeightButtonPrefab = Resources.Load<UI_MiniMapHeightButton>("Prefabs/UI/PRF_MiniMapHeightButton");
target = Camera.main;
Button_Maximize.onClick.AddListener(OnClickMaximize);
Button_Minimize.onClick.AddListener(OnClickMinimize);
ZoomSlider.onValueChanged.AddListener(OnSliderValueChanged);
worldMin = new Vector2(-mapRange, -mapRange);
worldMax = new Vector2(mapRange, mapRange);
sizeDelta = rect.sizeDelta;
anchoredPos = rect.anchoredPosition;
}
private void OnEnable()
@@ -215,12 +239,75 @@ namespace XED.UI
}
}
public void OnSliderValueChanged(float value)
void OnSliderValueChanged(float value)
{
float offset = Mathf.Lerp(0, mapRange, value);
MiniMapScreen.offsetMin = new Vector2(-offset, -offset);
MiniMapScreen.offsetMax = new Vector2(offset, offset);
}
void OnClickMaximize()
{
if (isMaximize)
{
SetOriginRect();
isMaximize = false;
}
else
{
Button_Minimize.gameObject.SetActive(false);
rect.offsetMin = Vector2.zero;
rect.offsetMax = Vector2.zero;
isMaximize = true;
}
}
void OnClickMinimize()
{
if (isMinimize)
{
SetOriginRect();
isMinimize = false;
}
else
{
rectMask2D.enabled = true;
foreach (Transform headerChild in HeaderArea.transform)
{
GameObject headerChildObject = headerChild.gameObject;
if (headerChildObject != Button_Minimize.gameObject)
{
headerChildObject.SetActive(false);
}
}
MiniMapScreenMask.gameObject.SetActive(false);
HeightSelectBar.gameObject.SetActive(false);
ZoomSlider.gameObject.SetActive(false);
rect.offsetMin = new Vector2(rect.offsetMin.x + 520, rect.offsetMin.y + 564);
isMinimize = true;
}
}
void SetOriginRect()
{
foreach (Transform headerChild in HeaderArea.transform)
{
GameObject headerChildObject = headerChild.gameObject;
headerChildObject.SetActive(true);
}
MiniMapScreenMask.gameObject.SetActive(true);
HeightSelectBar.gameObject.SetActive(true);
ZoomSlider.gameObject.SetActive(true);
rect.sizeDelta = sizeDelta;
rect.anchoredPosition = anchoredPos;
rectMask2D.enabled = false;
}
}
}