2025-03-10 07:25:29 +00:00
|
|
|
using System.Collections.Generic;
|
2025-03-04 07:30:03 +00:00
|
|
|
using TMPro;
|
2024-12-15 01:39:39 +00:00
|
|
|
using UnityEngine;
|
2025-03-06 02:40:36 +00:00
|
|
|
using UnityEngine.AddressableAssets;
|
|
|
|
|
using UnityEngine.ResourceManagement.AsyncOperations;
|
|
|
|
|
using UnityEngine.UI;
|
|
|
|
|
using Random = UnityEngine.Random;
|
2024-12-15 01:39:39 +00:00
|
|
|
|
|
|
|
|
public class LoadingUI : MyCoroutine
|
|
|
|
|
{
|
2025-03-26 00:49:56 +00:00
|
|
|
public static bool isIns;
|
2024-12-15 01:39:39 +00:00
|
|
|
public static LoadingUI Ins;
|
|
|
|
|
public GameObject go;
|
2025-03-06 02:40:36 +00:00
|
|
|
public TextMeshProUGUI[] texts; // 0 팁, 1 로딩 진행 상황
|
|
|
|
|
public Slider slider_loading;
|
|
|
|
|
|
|
|
|
|
public RawImage loadingimg;
|
|
|
|
|
AsyncOperationHandle<Texture> currentHandle;
|
2025-03-10 07:25:29 +00:00
|
|
|
List<bool> list_loadingComplete = new List<bool> { false, false };
|
2025-03-06 02:40:36 +00:00
|
|
|
|
|
|
|
|
public int MaxImage = 1;
|
|
|
|
|
int m_index = 1;
|
2024-12-15 01:39:39 +00:00
|
|
|
|
2026-09-06 23:24:25 +00:00
|
|
|
// #800 세로 화면 대응 --------------------------------------------------------------
|
|
|
|
|
// 배경은 16:9 원본을 세로 화면 높이에 맞춰 띄우므로 가로가 크게 잘린다.
|
|
|
|
|
// 잘릴 때 "화면 중앙에 둘 원본의 가로 위치"는 그림마다 다르다(주인공이 좌/우 어디에 있느냐).
|
|
|
|
|
// 그래서 이미지 번호별 초점을 인스펙터 데이터로 들고 다닌다. 값의 SOT 는 프리팹이다.
|
|
|
|
|
[Header("#800 세로 대응")]
|
|
|
|
|
[Tooltip("배경 RawImage 의 WLBackgroundFit. 비어 있으면 loadingimg 에서 자동으로 찾는다.")]
|
|
|
|
|
public WLBackgroundFit bgFit;
|
|
|
|
|
|
|
|
|
|
[Tooltip("Loading1~MaxImage 각 장의 초점 x (0 = 왼쪽 끝, 0.5 = 정중앙, 1 = 오른쪽 끝). 비면 전부 0.5.")]
|
|
|
|
|
public float[] focusX_perImage;
|
|
|
|
|
|
|
|
|
|
void Awake()
|
|
|
|
|
{
|
|
|
|
|
Ins = this; isIns = true;
|
|
|
|
|
if (bgFit == null && loadingimg != null) bgFit = loadingimg.GetComponent<WLBackgroundFit>();
|
|
|
|
|
}
|
2025-03-04 07:30:03 +00:00
|
|
|
|
2025-03-11 23:47:21 +00:00
|
|
|
private void Start() { Load_Img(); }
|
|
|
|
|
|
|
|
|
|
void Load_Img()
|
2024-12-15 01:39:39 +00:00
|
|
|
{
|
2025-03-06 02:40:36 +00:00
|
|
|
m_index = Random.Range(1, MaxImage + 1);
|
|
|
|
|
AddrResourceMgr.Ins.LoadObject<Texture>($"Assets/Res_Addr/Loading/Loading{m_index}.jpg", handle =>
|
|
|
|
|
{
|
|
|
|
|
if (currentHandle.IsValid())
|
|
|
|
|
{
|
|
|
|
|
Addressables.Release(currentHandle);
|
|
|
|
|
loadingimg.texture = null; // 기존 Texture 참조 해제
|
|
|
|
|
}
|
2024-12-15 01:39:39 +00:00
|
|
|
|
2025-03-06 02:40:36 +00:00
|
|
|
currentHandle = handle;
|
|
|
|
|
loadingimg.texture = handle.Result;
|
2026-09-06 23:24:25 +00:00
|
|
|
Apply_Focus(m_index); // 그림이 바뀌면 크롭 기준점도 같이 바뀐다
|
2025-03-06 02:40:36 +00:00
|
|
|
});
|
2025-03-11 23:47:21 +00:00
|
|
|
}
|
|
|
|
|
|
2026-09-06 23:24:25 +00:00
|
|
|
/// 이미지 번호(1-base)에 맞는 초점을 배경에 적용한다. 표가 없거나 범위를 벗어나면 정중앙.
|
|
|
|
|
void Apply_Focus(int index)
|
|
|
|
|
{
|
|
|
|
|
if (bgFit == null) return;
|
|
|
|
|
int i = index - 1;
|
|
|
|
|
float focus = (focusX_perImage != null && i >= 0 && i < focusX_perImage.Length)
|
|
|
|
|
? focusX_perImage[i] : 0.5f;
|
|
|
|
|
bgFit.focusX = focus;
|
|
|
|
|
bgFit.Apply();
|
|
|
|
|
}
|
|
|
|
|
|
2025-03-11 23:47:21 +00:00
|
|
|
public void Start_Loading()
|
|
|
|
|
{
|
|
|
|
|
go.SetActive(true);
|
|
|
|
|
texts[0].text = "팁 입니다.";
|
|
|
|
|
slider_loading.value = 0f;
|
|
|
|
|
texts[1].text = "0%";
|
2025-03-10 07:25:29 +00:00
|
|
|
|
|
|
|
|
for (int i = 0; i < list_loadingComplete.Count; i++)
|
|
|
|
|
list_loadingComplete[i] = false;
|
2025-03-06 02:40:36 +00:00
|
|
|
}
|
|
|
|
|
public void Set_LoadingSlider(float proc)
|
2024-12-15 01:39:39 +00:00
|
|
|
{
|
2025-03-06 02:40:36 +00:00
|
|
|
slider_loading.value = proc;
|
|
|
|
|
texts[1].text = $"{proc * 100f:N0}%";
|
2024-12-15 01:39:39 +00:00
|
|
|
}
|
|
|
|
|
|
2025-03-10 07:25:29 +00:00
|
|
|
public void End_Loading(int index)
|
2024-12-15 01:39:39 +00:00
|
|
|
{
|
2025-03-11 23:47:21 +00:00
|
|
|
if (go.activeInHierarchy)
|
2025-03-10 07:25:29 +00:00
|
|
|
{
|
2025-03-11 23:47:21 +00:00
|
|
|
list_loadingComplete[index] = true;
|
|
|
|
|
bool endloading = true;
|
|
|
|
|
for (int i = 0; i < list_loadingComplete.Count; i++)
|
|
|
|
|
{
|
|
|
|
|
endloading = list_loadingComplete[i];
|
|
|
|
|
if (!endloading) break;
|
|
|
|
|
}
|
2025-03-10 07:25:29 +00:00
|
|
|
|
2025-03-11 23:47:21 +00:00
|
|
|
if (endloading)
|
|
|
|
|
{
|
|
|
|
|
Load_Img();
|
|
|
|
|
go.SetActive(false);
|
|
|
|
|
}
|
|
|
|
|
}
|
2024-12-15 01:39:39 +00:00
|
|
|
}
|
2026-09-06 23:24:25 +00:00
|
|
|
}
|