프리팹으로 만들어둔 유닛 객체에 HP바 생성
Slider -> 캔버스 위치와 scale값 조정

같은 방식으로 몬스터의 HP_Bar도 구현

value 값을 조정하여 HP조정 -> (범위 0 ~ 1)
첨에 생각했던 방식은 Hp바는 유닛 객체와 몬스터 객체에 각각 붙어있어야 동적으로 생성될때 Hp바도 같이 생성될 거라고 생각했다
하지만 실제로 실행해보니, Hp바를 슬라이더로 만들어서 canvas가 이를 가지고 있기 때문에 객체와 몬스터가 생성될때마다 Hp바를 갖고있는 canvas도 같이 생성되어버렸다
이렇게 되면 canvas가 게임씬에 너무 많이 생성되기에 렉을 유발할 수 있어서 다른 방식을 생각해보았다
public clss Monster : MonoBehaviour
{
public float speed;
public GameObject hpBarPrefab; // HP 바 프리팹
private GameObject hpBarInstance; // 생성된 HP 바 인스턴스
private void Start()
{
CreateHPBar();
}
private void FixedUpdate()
{
transform.position -= new Vector3(speed, 0, 0);
}
void CreateHPBar()
{
// Canvas를 찾아서 HP 바를 추가
Canvas canvas = FindObjectOfType<Canvas>();
if (canvas != null)
{
// HP 바 프리팹을 Canvas 아래에 생성
hpBarInstance = Instantiate(hpBarPrefab, canvas.transform);
// HP 바를 몬스터 위에 배치
hpBarInstance.GetComponent<HPBar>().SetTarget(this.transform);
}
}
public class Unit : MonoBehaviour
{
public GameObject hpBarPrefab; // HP 바 프리팹
private GameObject hpBarInstance; // 생성된 HP 바 인스턴스
private void Start()
{
CreateHPBar();
}
void CreateHPBar()
{
// Canvas를 찾아서 HP 바를 추가
Canvas canvas = FindObjectOfType<Canvas>();
if (canvas != null)
{
// HP 바 프리팹을 Canvas 아래에 생성
hpBarInstance = Instantiate(hpBarPrefab, canvas.transform);
// HP 바를 몬스터 위에 배치
hpBarInstance.GetComponent<HPBar>().SetTarget(this.transform);
}
}
}
