이번 글에서는 아이템 설명 창 및 플레이어 상태창을 구현 한것을 정리 해보겠습니다.
먼저 아이템 설명창을 먼저 생성을 합니다.

이렇게 생성을 하였다면 이제 스크립트를 만들어 보겠습니다
아이템과 게임 매니저에 값을 연결을 합니다.
//아이템
ui.GetComponent<UIManager>().GKeyActive(playerDetected, gameObject, itemData, false);
//게임 매니저
public void GKeyActive(bool active, GameObject gameObj , ItemData itemData )
{
currentTarget = gameObj;
itemDescription.GetComponent<ItemDescription>().SettingDescription(itemData, SItem);
}
연결을 한 이후 아이템 설명 오브젝트에 값을 전달 해줍니다.
using TMPro;
using UnityEngine;
using UnityEngine.UI;
public class ItemDescription : MonoBehaviour
{
public Image ItemImg;
public TextMeshProUGUI ItemName;
public TextMeshProUGUI ItemPrice;
public TextMeshProUGUI ItemText;
RectTransform rect;
Vector2 backPos = Vector2.zero;
void Start()
{
rect = GetComponent<RectTransform>();
backPos = rect.position;
}
public void SettingDescription(ItemData itemData , bool SaleItem)
{
ItemName.text = itemData.name;
ItemImg.sprite = itemData.ItemImg;
if(SaleItem)
ItemPrice.text = itemData.ItemPrice.ToString();
else
ItemPrice.text = itemData.ItemPrice.ToString(" ");
ItemText.text = itemData.ItemText;
}
public void SetPos(Vector2 Pos)
{
rect.anchoredPosition = Pos;
}
public void BackPos()
{
rect.anchoredPosition = backPos;
}
이렇게 전달하고 확인을 하면

이렇게 창이 나오게 됩니다
이제 상태 창 구현 해보겠습니다.

상태창을 만들었는대 지금 오른쪽에 보시면 많은 양의 변수값이 있습니다.
이 변수값을 게임 매니저 혹은 플레이어에게 받을려면
return Hp;
이렇게 받아오면 게임 매니저가 너무 길어저서 저는 게임매니저에서 능력치를 한번에 묶어서 저장하였습니다,
[System.Serializable]
public class PlayerStats
{
public float playerMaxHp;
public float playerNowHp;
public float playerMaxMp;
public float playerNowMp;
public float playerMoveSpeed;
public float attackDemage;
public float attackSpeed;
public float attackDeley;
public string cType;
public float cPower;
public float cTime;
public float rollSpeed;
public float rollDuration;
}
이렇게 추가를 하였습니다.
[System.Serializable]을 붙여서 인스펙터에서 값이 보이도록 직렬화 하였습니다.
이제 값이 필요한쪽에
Instance.Stats.필요한 부분
이렇게 사용하면 됩니다. 이제 이것을 이용하면
public void SettingText()
{
DamageText.text = Instance.Stats.attackDemage.ToString();
ATSpeedText.text = Instance.Stats.attackSpeed.ToString();
CPTypeText.text = Instance.Stats.cType;
CPowerText.text = Instance.Stats.cPower.ToString();
CTimeText.text = Instance.Stats.cTime.ToString();
RollSpeedText.text = Instance.Stats.rollSpeed.ToString();
RollDurationText.text = Instance.Stats.rollDuration.ToString();
}
이런 방식으로 Text에 값을 넣었습니다.

esc를 누르면 플레이어의 상태창이 나옵니다.
'유니티 개발 > 사이드 뷰 게임' 카테고리의 다른 글
| Unity 2D 스킬 구현 (0) | 2025.07.19 |
|---|---|
| Unity 2D 플레이어 스킬 UI 구현 (0) | 2025.07.18 |
| Unity 2D 게임 아이템 구현 (0) | 2025.07.18 |
| Unity 2D 게임 UI - ESC 눌렀을 때 멈춤 화면 (0) | 2025.07.18 |
| Unity 2D 게임 UI - 체력 바 및 시간 구현 (0) | 2025.07.18 |