2025-09-14 04:12:35 +00:00
|
|
|
using GUPS.AntiCheat.Protected;
|
|
|
|
|
using System.Collections;
|
2025-09-14 05:09:31 +00:00
|
|
|
using System.Collections.Generic;
|
2025-09-14 18:34:04 +00:00
|
|
|
using System.Linq;
|
|
|
|
|
using TMPro;
|
2025-09-14 04:12:35 +00:00
|
|
|
using UnityEngine;
|
2025-09-15 00:52:36 +00:00
|
|
|
using UnityEngine.InputSystem;
|
2025-09-14 04:12:35 +00:00
|
|
|
using UnityEngine.ResourceManagement.AsyncOperations;
|
|
|
|
|
using UnityEngine.UI;
|
|
|
|
|
|
|
|
|
|
public class Game_Mini : MonoBehaviour
|
|
|
|
|
{
|
2025-09-14 19:25:46 +00:00
|
|
|
public Game_Mini_Result m_Game_Mini_Result;
|
2025-09-15 00:52:36 +00:00
|
|
|
public TextMeshProUGUI[] texts_money; // 0 하트, 1 챗코인, 2 가챠 코인, 3 폭탄, 4 우산, 5 딜도
|
2025-09-14 04:12:35 +00:00
|
|
|
public Image i_girl, i_girlsd;
|
|
|
|
|
public MiniGameItemCard[] items;
|
|
|
|
|
public Slider slider_hp;
|
2025-09-14 05:09:31 +00:00
|
|
|
public Transform tf_obtacleParent;
|
|
|
|
|
public GameObject go_Obtacle;
|
2025-09-14 07:05:38 +00:00
|
|
|
public GameObject[] gos_hiteffect;
|
|
|
|
|
public RectTransform tf_pc;
|
|
|
|
|
public Joystick m_Joystick;
|
2025-09-14 04:12:35 +00:00
|
|
|
|
2025-09-16 00:55:24 +00:00
|
|
|
#if UNITY_EDITOR
|
|
|
|
|
[Header("Test")]
|
|
|
|
|
public bool NoDamage;
|
|
|
|
|
#endif
|
|
|
|
|
|
2025-09-14 04:12:35 +00:00
|
|
|
// 1 평소, 2 맞았을 때
|
|
|
|
|
AsyncOperationHandle<Sprite> m_Handle1, m_Handle2, m_HandleSD;
|
|
|
|
|
ProtectedInt32 m_HP;
|
2025-09-14 07:24:49 +00:00
|
|
|
bool bStartGame;
|
2025-09-15 01:05:59 +00:00
|
|
|
float PcPosLimit, PlayTime;
|
2025-09-14 18:34:04 +00:00
|
|
|
Dictionary<eMiniGameObtacleType, ProtectedInt32> dic_Money = new Dictionary<eMiniGameObtacleType, ProtectedInt32>();
|
|
|
|
|
Dictionary<eMiniGameObtacleType, TextMeshProUGUI> dic_MoneyText = new Dictionary<eMiniGameObtacleType, TextMeshProUGUI>();
|
2025-09-14 04:12:35 +00:00
|
|
|
|
2025-09-14 05:09:31 +00:00
|
|
|
Dictionary<eMiniGameObtacleType, int> dic_weight = new Dictionary<eMiniGameObtacleType, int>();
|
|
|
|
|
List<MiniGameObtacle> list_MiniGameObtacle = new List<MiniGameObtacle>();
|
|
|
|
|
|
2025-09-14 07:24:49 +00:00
|
|
|
private void Awake()
|
|
|
|
|
{
|
|
|
|
|
PcPosLimit = (Screen.width >> 1) - 70f;
|
|
|
|
|
}
|
|
|
|
|
|
2025-09-15 00:52:36 +00:00
|
|
|
void Init()
|
2025-09-14 04:12:35 +00:00
|
|
|
{
|
2025-09-14 05:09:31 +00:00
|
|
|
if (dic_weight.Count == 0)
|
|
|
|
|
{
|
|
|
|
|
dic_weight.Add(eMiniGameObtacleType.White, table_GlobalValue.Ins.Get_Int("MiniGameWeight_White"));
|
|
|
|
|
dic_weight.Add(eMiniGameObtacleType.Red, table_GlobalValue.Ins.Get_Int("MiniGameWeight_Red"));
|
2025-09-15 00:52:36 +00:00
|
|
|
dic_weight.Add(eMiniGameObtacleType.HpHeal, table_GlobalValue.Ins.Get_Int("MiniGameWeight_HpHeal"));
|
2025-09-14 05:09:31 +00:00
|
|
|
dic_weight.Add(eMiniGameObtacleType.AlbumOpen, table_GlobalValue.Ins.Get_Int("MiniGameWeight_AlbumOpen"));
|
|
|
|
|
dic_weight.Add(eMiniGameObtacleType.ChatCoin, table_GlobalValue.Ins.Get_Int("MiniGameWeight_ChatCoin"));
|
|
|
|
|
dic_weight.Add(eMiniGameObtacleType.GachaCoin, table_GlobalValue.Ins.Get_Int("MiniGameWeight_GachaCoin"));
|
2025-09-15 00:52:36 +00:00
|
|
|
dic_weight.Add(eMiniGameObtacleType.ItemBomb, table_GlobalValue.Ins.Get_Int("MiniGameWeight_ItemBomb"));
|
|
|
|
|
dic_weight.Add(eMiniGameObtacleType.ItemUmbrella, table_GlobalValue.Ins.Get_Int("MiniGameWeight_ItemUmbrella"));
|
|
|
|
|
dic_weight.Add(eMiniGameObtacleType.ItemDildo, table_GlobalValue.Ins.Get_Int("MiniGameWeight_ItemDildo"));
|
|
|
|
|
}
|
|
|
|
|
if (dic_Money.Count == 0)
|
|
|
|
|
{
|
|
|
|
|
for (eMiniGameObtacleType i = eMiniGameObtacleType.AlbumOpen; i <= eMiniGameObtacleType.ItemDildo; i++)
|
|
|
|
|
dic_Money.Add(i, 0);
|
|
|
|
|
}
|
|
|
|
|
if (dic_MoneyText.Count == 0)
|
|
|
|
|
{
|
|
|
|
|
dic_MoneyText.Add(eMiniGameObtacleType.AlbumOpen, texts_money[0]);
|
|
|
|
|
dic_MoneyText.Add(eMiniGameObtacleType.ChatCoin, texts_money[1]);
|
|
|
|
|
dic_MoneyText.Add(eMiniGameObtacleType.GachaCoin, texts_money[2]);
|
|
|
|
|
dic_MoneyText.Add(eMiniGameObtacleType.ItemBomb, texts_money[3]);
|
|
|
|
|
dic_MoneyText.Add(eMiniGameObtacleType.ItemUmbrella, texts_money[4]);
|
|
|
|
|
dic_MoneyText.Add(eMiniGameObtacleType.ItemDildo, texts_money[5]);
|
2025-09-14 05:09:31 +00:00
|
|
|
}
|
2025-09-14 18:39:05 +00:00
|
|
|
|
2025-09-14 18:34:04 +00:00
|
|
|
for (int i = 0; i < dic_Money.Keys.ToList().Count; i++)
|
|
|
|
|
{
|
|
|
|
|
var key = dic_Money.Keys.ToList()[i];
|
2025-09-15 00:52:36 +00:00
|
|
|
switch (key)
|
|
|
|
|
{
|
|
|
|
|
default:
|
|
|
|
|
dic_Money[key] = 0;
|
|
|
|
|
break;
|
2025-09-15 01:02:19 +00:00
|
|
|
//case eMiniGameObtacleType.ItemBomb:
|
|
|
|
|
// dic_Money[key] = SaveMgr.Ins.Get_Money(eMoney.ItemBomb);
|
|
|
|
|
// break;
|
|
|
|
|
//case eMiniGameObtacleType.ItemUmbrella:
|
|
|
|
|
// dic_Money[key] = SaveMgr.Ins.Get_Money(eMoney.ItemUmbrella);
|
|
|
|
|
// break;
|
|
|
|
|
//case eMiniGameObtacleType.ItemDildo:
|
|
|
|
|
// dic_Money[key] = SaveMgr.Ins.Get_Money(eMoney.ItemDildo);
|
|
|
|
|
// break;
|
2025-09-15 00:52:36 +00:00
|
|
|
}
|
2025-09-14 18:34:04 +00:00
|
|
|
dic_Money[key].Obfuscate();
|
2025-09-15 00:52:36 +00:00
|
|
|
dic_MoneyText[key].text = dic_Money[key].ToString();
|
2025-09-14 18:34:04 +00:00
|
|
|
}
|
|
|
|
|
|
2025-09-15 00:52:36 +00:00
|
|
|
m_Game_Mini_Result.gameObject.SetActive(false);
|
|
|
|
|
|
|
|
|
|
list_MiniGameObtacle.ForEach(f => f.gameObject.SetActive(false));
|
2025-09-14 18:34:04 +00:00
|
|
|
|
2025-09-14 07:05:38 +00:00
|
|
|
tf_pc.anchoredPosition = new Vector2(0f, 325f);
|
|
|
|
|
|
|
|
|
|
DSUtil.InActivateGameObjects(gos_hiteffect);
|
2025-09-14 04:12:35 +00:00
|
|
|
for (int i = 0; i < items.Length; i++)
|
|
|
|
|
items[i].Set();
|
2025-09-15 01:05:59 +00:00
|
|
|
|
|
|
|
|
PlayTime = 0f;
|
2025-09-15 00:52:36 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public void Set()
|
|
|
|
|
{
|
|
|
|
|
gameObject.SetActive(true);
|
|
|
|
|
|
|
|
|
|
Init();
|
2025-09-14 04:12:35 +00:00
|
|
|
|
|
|
|
|
i_girl.enabled = false;
|
|
|
|
|
AddrResourceMgr.Ins.LoadObject<Sprite>($"Girl_Game/{SaveMgr.Ins.Get_SelectGirlID()}-1.png", handle =>
|
|
|
|
|
{
|
|
|
|
|
m_Handle1 = handle;
|
|
|
|
|
i_girl.enabled = true;
|
|
|
|
|
i_girl.sprite = handle.Result;
|
|
|
|
|
});
|
|
|
|
|
AddrResourceMgr.Ins.LoadObject<Sprite>($"Girl_Game/{SaveMgr.Ins.Get_SelectGirlID()}-2.png", handle =>
|
|
|
|
|
{
|
|
|
|
|
m_Handle2 = handle;
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
i_girlsd.enabled = false;
|
|
|
|
|
AddrResourceMgr.Ins.LoadObject<Sprite>($"Girl_Game/{SaveMgr.Ins.Get_SelectGirlID()}sd.png", handle =>
|
|
|
|
|
{
|
|
|
|
|
m_HandleSD = handle;
|
|
|
|
|
i_girlsd.enabled = true;
|
|
|
|
|
i_girlsd.sprite = handle.Result;
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
slider_hp.value = 1f;
|
|
|
|
|
m_HP = table_GlobalValue.Ins.Get_Int("MiniGameHP");
|
|
|
|
|
m_HP.Obfuscate();
|
2025-09-14 05:09:31 +00:00
|
|
|
|
|
|
|
|
StartCoroutine(Co_Update());
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
IEnumerator Co_Update()
|
|
|
|
|
{
|
2025-09-14 07:24:49 +00:00
|
|
|
bStartGame = false;
|
2025-09-14 05:09:31 +00:00
|
|
|
yield return new WaitForSeconds(3f);
|
2025-09-14 07:24:49 +00:00
|
|
|
bStartGame = true;
|
2025-09-14 05:09:31 +00:00
|
|
|
|
2025-09-15 06:43:29 +00:00
|
|
|
float gap = table_GlobalValue.Ins.Get_Float("MiniGame_Obtacle_Create_Gap"); // 이 시간이 지나면 방해물 생성
|
|
|
|
|
float gap_minus_time = table_GlobalValue.Ins.Get_Float("MiniGame_Obtacle_Gap_Time"); // 이 시간이 지나면 방해물 생성 시간 감소
|
|
|
|
|
float gap_minus = table_GlobalValue.Ins.Get_Float("MiniGame_Obtacle_Gap_Reduce"); // 방해물 생성 시간 감소값
|
|
|
|
|
float gap_minus_limittime = table_GlobalValue.Ins.Get_Float("MiniGame_Obtacle_Gap_LimitTime"); // gap 최소값
|
2025-09-14 05:09:31 +00:00
|
|
|
|
2025-09-15 06:43:29 +00:00
|
|
|
Create_Obtacle();
|
|
|
|
|
float t_gap = 0f, t_gap_minus_time = 0f;
|
2025-09-14 05:09:31 +00:00
|
|
|
while (true)
|
|
|
|
|
{
|
|
|
|
|
if (m_HP <= 0) break;
|
|
|
|
|
|
2025-09-15 06:43:29 +00:00
|
|
|
yield return null;
|
|
|
|
|
t_gap += Time.deltaTime;
|
|
|
|
|
if (t_gap >= gap)
|
2025-09-14 05:09:31 +00:00
|
|
|
{
|
2025-09-15 06:43:29 +00:00
|
|
|
t_gap = 0f;
|
|
|
|
|
Create_Obtacle();
|
2025-09-14 05:09:31 +00:00
|
|
|
}
|
|
|
|
|
|
2025-09-15 06:43:29 +00:00
|
|
|
t_gap_minus_time += Time.deltaTime;
|
|
|
|
|
if (t_gap_minus_time >= gap_minus_time)
|
|
|
|
|
{
|
|
|
|
|
t_gap_minus_time = 0f;
|
|
|
|
|
gap -= gap_minus;
|
|
|
|
|
if (gap < gap_minus_limittime)
|
|
|
|
|
gap = gap_minus_limittime;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
void Create_Obtacle()
|
|
|
|
|
{
|
|
|
|
|
var obtacle = list_MiniGameObtacle.Find(f => !f.gameObject.activeInHierarchy);
|
|
|
|
|
if (obtacle == null)
|
|
|
|
|
{
|
|
|
|
|
obtacle = DSUtil.Get_Clone<MiniGameObtacle>(go_Obtacle, tf_obtacleParent);
|
|
|
|
|
list_MiniGameObtacle.Add(obtacle);
|
2025-09-14 05:09:31 +00:00
|
|
|
}
|
2025-09-15 06:43:29 +00:00
|
|
|
obtacle.Set(dic_weight);
|
2025-09-14 04:12:35 +00:00
|
|
|
}
|
|
|
|
|
|
2025-09-14 07:24:49 +00:00
|
|
|
private void Update()
|
|
|
|
|
{
|
|
|
|
|
if (bStartGame)
|
|
|
|
|
{
|
|
|
|
|
if (m_HP <= 0) return;
|
|
|
|
|
|
2025-09-15 01:05:59 +00:00
|
|
|
PlayTime += Time.deltaTime;
|
|
|
|
|
|
2025-09-14 07:24:49 +00:00
|
|
|
var PcSpeed = table_GlobalValue.Ins.Get_Float("MiniGamePCSpeed");
|
|
|
|
|
if (m_Joystick.Direction.x < 0f)
|
|
|
|
|
{
|
|
|
|
|
tf_pc.anchoredPosition = new Vector2(tf_pc.anchoredPosition.x - Time.deltaTime * PcSpeed, tf_pc.anchoredPosition.y);
|
|
|
|
|
if (tf_pc.anchoredPosition.x < -PcPosLimit)
|
|
|
|
|
tf_pc.anchoredPosition = new Vector2(-PcPosLimit, tf_pc.anchoredPosition.y);
|
|
|
|
|
}
|
|
|
|
|
else if (m_Joystick.Direction.x > 0f)
|
|
|
|
|
{
|
|
|
|
|
tf_pc.anchoredPosition = new Vector2(tf_pc.anchoredPosition.x + Time.deltaTime * PcSpeed, tf_pc.anchoredPosition.y);
|
|
|
|
|
if (tf_pc.anchoredPosition.x > PcPosLimit)
|
|
|
|
|
tf_pc.anchoredPosition = new Vector2(PcPosLimit, tf_pc.anchoredPosition.y);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
2025-09-14 05:09:31 +00:00
|
|
|
Coroutine cohit;
|
2025-09-14 18:34:04 +00:00
|
|
|
public void Hit(eMiniGameObtacleType type, int val)
|
2025-09-14 05:09:31 +00:00
|
|
|
{
|
|
|
|
|
if (cohit != null) StopCoroutine(cohit);
|
2025-09-14 18:39:05 +00:00
|
|
|
|
|
|
|
|
if (m_HP <= 0)
|
|
|
|
|
{
|
|
|
|
|
cohit = null;
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
|
2025-09-14 18:34:04 +00:00
|
|
|
cohit = StartCoroutine(Co_Hit(type, val));
|
2025-09-14 05:09:31 +00:00
|
|
|
}
|
2025-09-14 18:34:04 +00:00
|
|
|
IEnumerator Co_Hit(eMiniGameObtacleType type, int val)
|
2025-09-14 04:12:35 +00:00
|
|
|
{
|
2025-09-14 18:34:04 +00:00
|
|
|
switch (type)
|
|
|
|
|
{
|
|
|
|
|
case eMiniGameObtacleType.White:
|
|
|
|
|
case eMiniGameObtacleType.Red:
|
2025-09-16 00:55:24 +00:00
|
|
|
#if UNITY_EDITOR
|
|
|
|
|
if (NoDamage) yield break;
|
|
|
|
|
#endif
|
2025-09-14 18:34:04 +00:00
|
|
|
m_HP -= val;
|
|
|
|
|
m_HP.Obfuscate();
|
|
|
|
|
slider_hp.value = m_HP / table_GlobalValue.Ins.Get_Float("MiniGameHP");
|
|
|
|
|
if (m_HP <= 0) GameOver();
|
|
|
|
|
i_girl.sprite = m_Handle2.Result;
|
|
|
|
|
break;
|
|
|
|
|
case eMiniGameObtacleType.HpHeal:
|
|
|
|
|
m_HP += val;
|
2025-09-16 00:55:24 +00:00
|
|
|
if (m_HP > table_GlobalValue.Ins.Get_Float("MiniGameHP"))
|
|
|
|
|
m_HP = table_GlobalValue.Ins.Get_Int("MiniGameHP");
|
2025-09-14 18:34:04 +00:00
|
|
|
m_HP.Obfuscate();
|
|
|
|
|
slider_hp.value = m_HP / table_GlobalValue.Ins.Get_Float("MiniGameHP");
|
|
|
|
|
break;
|
|
|
|
|
default:
|
2025-09-16 00:55:24 +00:00
|
|
|
Add_Item(type, val);
|
2025-09-14 18:34:04 +00:00
|
|
|
break;
|
|
|
|
|
}
|
2025-09-14 04:12:35 +00:00
|
|
|
|
|
|
|
|
yield return new WaitForSeconds(0.5f);
|
|
|
|
|
i_girl.sprite = m_Handle1.Result;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void GameOver()
|
|
|
|
|
{
|
2025-09-15 01:05:59 +00:00
|
|
|
m_Game_Mini_Result.Set(PlayTime);
|
2025-09-14 04:12:35 +00:00
|
|
|
}
|
2025-09-14 07:05:38 +00:00
|
|
|
|
2025-09-15 00:23:06 +00:00
|
|
|
public void Save_GameResult()
|
|
|
|
|
{
|
|
|
|
|
SaveMgr.Ins.Add_Money(eMoney.AlbumOpen, dic_Money[eMiniGameObtacleType.AlbumOpen]);
|
2025-09-15 00:52:36 +00:00
|
|
|
SaveMgr.Ins.Add_Money(eMoney.Chat, dic_Money[eMiniGameObtacleType.ChatCoin]);
|
|
|
|
|
SaveMgr.Ins.Add_Money(eMoney.Gacha, dic_Money[eMiniGameObtacleType.GachaCoin]);
|
|
|
|
|
|
2025-09-15 01:02:19 +00:00
|
|
|
//SaveMgr.Ins.Set_Money(eMoney.ItemBomb, dic_Money[eMiniGameObtacleType.ItemBomb]);
|
|
|
|
|
//SaveMgr.Ins.Set_Money(eMoney.ItemUmbrella, dic_Money[eMiniGameObtacleType.ItemUmbrella]);
|
|
|
|
|
//SaveMgr.Ins.Set_Money(eMoney.ItemDildo, dic_Money[eMiniGameObtacleType.ItemDildo]);
|
2025-09-15 00:52:36 +00:00
|
|
|
|
2025-09-15 00:23:06 +00:00
|
|
|
SaveMgr.Ins.Save();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public Dictionary<eMiniGameObtacleType, ProtectedInt32> Get_ResultMoney() { return dic_Money; }
|
2025-09-16 00:55:24 +00:00
|
|
|
public void Use_Item(eMiniGameObtacleType item)
|
|
|
|
|
{
|
|
|
|
|
--dic_Money[item];
|
|
|
|
|
dic_Money[item].Obfuscate();
|
|
|
|
|
dic_MoneyText[item].text = dic_Money[item].ToString();
|
|
|
|
|
|
|
|
|
|
switch (item)
|
|
|
|
|
{ // 아이템 적용
|
|
|
|
|
case eMiniGameObtacleType.ItemBomb:
|
|
|
|
|
list_MiniGameObtacle.ForEach(f => f.Off_OnlyObtacle());
|
|
|
|
|
break;
|
|
|
|
|
case eMiniGameObtacleType.ItemUmbrella:
|
|
|
|
|
break;
|
|
|
|
|
case eMiniGameObtacleType.ItemDildo:
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
public void Add_Item(eMiniGameObtacleType type, int val)
|
|
|
|
|
{
|
|
|
|
|
if (!dic_Money.ContainsKey(type))
|
|
|
|
|
dic_Money.Add(type, 0);
|
|
|
|
|
dic_Money[type] += val;
|
|
|
|
|
|
|
|
|
|
if (type == eMiniGameObtacleType.ItemBomb || type == eMiniGameObtacleType.ItemUmbrella ||
|
|
|
|
|
type == eMiniGameObtacleType.ItemDildo)
|
|
|
|
|
{
|
|
|
|
|
if (dic_Money[type] > 5) dic_Money[type] = 5;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
dic_Money[type].Obfuscate();
|
|
|
|
|
if (dic_MoneyText.ContainsKey(type))
|
|
|
|
|
dic_MoneyText[type].text = dic_Money[type].ToString();
|
|
|
|
|
}
|
2025-09-15 00:23:06 +00:00
|
|
|
|
2025-09-14 07:05:38 +00:00
|
|
|
public void Show_HitEffect(Vector3 pos)
|
|
|
|
|
{
|
|
|
|
|
for (int i = 0; i < gos_hiteffect.Length; i++)
|
|
|
|
|
{
|
|
|
|
|
if (!gos_hiteffect[i].activeInHierarchy)
|
|
|
|
|
{
|
|
|
|
|
StartCoroutine(Co_HitEffect(gos_hiteffect[i], pos));
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
IEnumerator Co_HitEffect(GameObject effect, Vector3 pos)
|
|
|
|
|
{
|
|
|
|
|
effect.SetActive(true);
|
|
|
|
|
effect.GetComponent<RectTransform>().position = pos;
|
|
|
|
|
yield return new WaitForSeconds(1.5f);
|
|
|
|
|
effect.SetActive(false);
|
|
|
|
|
}
|
2025-09-15 00:52:36 +00:00
|
|
|
|
|
|
|
|
public void OnClick_Exit()
|
|
|
|
|
{
|
|
|
|
|
gameObject.SetActive(false);
|
|
|
|
|
m_Game_Mini_Result.gameObject.SetActive(false);
|
|
|
|
|
AddrResourceMgr.Ins.Relese(m_Handle1);
|
|
|
|
|
AddrResourceMgr.Ins.Relese(m_Handle2);
|
|
|
|
|
AddrResourceMgr.Ins.Relese(m_HandleSD);
|
|
|
|
|
}
|
2025-09-14 04:12:35 +00:00
|
|
|
}
|