Slider UI를 사용하여 체력바를 표현하였다.
프리팹으로 만들었다.
public class UI_HPBar : UI_Base
{
public enum GameObjects
{
HPBar,
}
public override void Init()
{
Bind<GameObject>(typeof(GameObjects));
}
private void Update()
{
Transform parent = transform.parent;
transform.position = parent.position + Vector3.up * (parent.GetComponent<Collider>().bounds.size.y + 0.4f);
}
}
HPBar을 바인드하고 플레이어의 콜라이더 위에 배치시켰다.
public T MakeWorldSpaceUI<T>(Transform parent = null, string name = null) where T : UI_Base
{
if (string.IsNullOrEmpty(name))
name = typeof(T).Name;
GameObject go = Managers.Resource.Instantiate($"UI/WorldSpace/{name}");
if (parent != null)
go.transform.SetParent(parent.transform);
Canvas canvas = go.GetOrAddCompoent<Canvas>();
canvas.renderMode = RenderMode.WorldSpace;
canvas.worldCamera = Camera.main;
return Util.GetOrAddCompoent<T>(go);
}
WorldSpaceUI를 위한 코드를 작성하였다.
참고로 UI_HPBar는 씬도 팝업도 아니므로 WorldSpace 폴더에 저장하였다.
void Start()
{
Managers.UI.MakeWorldSpaceUI<UI_HPBar>(transform);
}
플레이어에게 UI_HPBar UI를 부착하였다.
UI가 알맞게 생성되었으나 캐릭터와 같이 회전하는 문제가 생겼다.