Shegotwet/Assets/ResWork/ShowAlbum/ShowPanel.cs

79 lines
2.3 KiB
C#
Raw Normal View History

2025-09-12 03:38:36 +00:00
using System;
using UnityEngine;
using UnityEngine.AddressableAssets;
using UnityEngine.ResourceManagement.AsyncOperations;
public class ShowAlbumBase { public string s_Image; }
public class ShowPanel : MonoBehaviour
{
public SpriteRenderer i_image;
public GameObject go_btns;
public bool isFull;
int zoomStep = 0;
AsyncOperationHandle m_Handle;
float original_orthographicSize;
Action act_Close;
public void Set<T>(T data, Action actClose)
{
act_Close = actClose;
gameObject.SetActive(true);
go_btns.SetActive(true);
if (m_Handle.IsValid()) Addressables.Release(m_Handle);
i_image.enabled = false;
AddrResourceMgr.Ins.LoadObject<Sprite>((data as ShowAlbumBase).s_Image, handle =>
{
m_Handle = handle;
i_image.enabled = true;
i_image.sprite = handle.Result;
});
isFull = false;
zoomStep = 0;
original_orthographicSize = Camera.main.orthographicSize;
Camera.main.orthographicSize = 4f;
Camera.main.transform.position = new Vector3(0f, 0f, -10f);
}
public void OnClick_Btn(int index)
{
switch (index)
{
case 0: // 나가기
gameObject.SetActive(false);
if (m_Handle.IsValid()) Addressables.Release(m_Handle);
Camera.main.orthographicSize = original_orthographicSize;
act_Close();
break;
case 1: // 풀 스크린
go_btns.SetActive(false);
Invoke("Set_Full", Time.deltaTime);
break;
case 2: // 확대 (2단계까지만)
++zoomStep;
if (zoomStep > 2) zoomStep = 2;
Camera.main.orthographicSize = 4 - zoomStep;
break;
case 3: // 축소
--zoomStep;
if (zoomStep < 0) zoomStep = 0;
Camera.main.orthographicSize = 4 - zoomStep;
Camera.main.transform.position = new Vector3(0f, 0f, -10f);
break;
case 4: // UI 다시 보이기
isFull = false;
go_btns.SetActive(true);
break;
}
}
void Set_Full()
{
isFull = true;
}
}