Practice_Unity/Assets/Scripts/Managers/UIManager.cs
Seonkyu.kim 60d64f1069 작업
1. UI - 조이스틱 UIManager에 추가 및 Scene에서 호출 방식 변경
2. UI - 경험치 바 앞에 레벨 아이콘 추가
3. 몬스터 죽었을때 경험치로 변경
4. 경험치 바와 레벨 아이콘 연동

Todo
1. 투사체 공격 만들기
2. 몬스터가 플레이어 쫓아오게 만들기
3. 몬스터를 카메라 외각에서 다량으로 생성하는 기능 추가하기
4. 몬스터가 캐릭터 공격시 체력 닳게 하기
5. 메뉴 UI 만들기
6. 레벨업시 획득 스킬 UI 만들기
7. 체력바 UI 만들기
8. 공격시 데미지 띄우는 UI 만들기
2025-10-02 17:37:10 +09:00

85 lines
2.3 KiB
C#

using System.Collections.Generic;
using UnityEngine;
public class UIManager : IManager
{
private Canvas _canvas;
private List<string> _uiList = new ();
public List<string> UIList
{
get { return _uiList; }
set
{
_uiList = value ?? new List<string>();
foreach (var ui in _uiList)
{
string path = Define.MapPath(ui);
CreateObject(path);
}
}
}
private readonly Dictionary<string, GameObject> _objects = new ();
private readonly Dictionary<string, GameObject> _instances = new();
private readonly Dictionary<string, bool> _switchObjects = new ();
public void Init()
{
_canvas = GameObject.Find("@Canvas").GetComponent<Canvas>();
}
private void CreateObject(string path)
{
GameObject createObj = Manager.Resource.Load<GameObject>(path);
if (createObj != null)
{
_objects.Add(createObj.name, createObj);
_switchObjects.Add(createObj.name, false);
}
}
public void SwitchOnObject(string name, bool isOn)
{
if (_switchObjects.ContainsKey(name) && (_switchObjects[name] != isOn))
_switchObjects[name] = isOn;
else return;
if (!_instances.ContainsKey(name))
{
GameObject obj = Manager.Resource.Instantiate(_objects[name], _canvas.transform);
_instances.Add(name, obj);
}
if (_switchObjects.ContainsKey(name) && _switchObjects[name])
{
_objects[name].SetActive(true);
}
else
{
_objects[name].SetActive(false);
}
}
#region UI Object
#region ExpBar
public void ExclusiveExpBar()
{
PlayerController player = GameObject.FindObjectOfType<PlayerController>();
if (player != null)
{
player.OnExpChanged -= UpdateExpBar;
player.OnExpChanged += UpdateExpBar;
}
}
private void UpdateExpBar(int level, float currentExp, float maxExp)
{
ExpBar expBar = _instances["ExpBar"].GetComponent<ExpBar>();
expBar.UpdateValue(level, currentExp, maxExp);
}
#endregion
#endregion
}