사용자 인터랙션에 대한 응답
플레이어의 입력에 반응하여 특정 UI를 보여주거나 숨기는 기능은 게임의 몰입감과 사용자 경험을 높여준다.
기능 구현: 중요 아이템 UI 표시 및 제거
SW_ItemData 스크립트 수정
[CreateAssetMenu(fileName = "Item", menuName = "New Item")]
public class SW_ItemData : ScriptableObject
{
[Header("Important Item")]
public GameObject importantItemDisplay; // 중요한 아이템을 표시할 UI
public Canvas importantItemCanvasPrefab; // 중요한 아이템 UI를 위한 캔버스 프리팹
}
SW_Inventory 스크립트 수정
private Canvas currentImportantItemCanvas; // 현재 활성화된 중요 아이템의 캔버스를 추적
private GameObject currentImportantItemUI; // 현재 활성화된 중요 아이템 UI 자체를 추적
public void OnUseButton()
{
// 현재 선택된 아이템이 null이 아니며, 아이템 타입이 ImportantMix 또는 Important인지 확인
if (selectedItem != null && ( selectedItem.item.type == ItemType.ImportantMix || selectedItem.item.type == ItemType.Important))
{
// 선택된 아이템의 importantItemCanvasPrefab과 importantItemDisplay가 null이 아닌지 확인
if (selectedItem.item.importantItemCanvasPrefab != null && selectedItem.item.importantItemDisplay != null)
{
// 중요 아이템의 캔버스 프리팹을 인스턴스화하여 화면에 표시
currentImportantItemCanvas = Instantiate(selectedItem.item.importantItemCanvasPrefab);
// 중요 아이템의 UI를 캔버스의 자식으로 인스턴스화하여 화면에 표시
currentImportantItemUI = Instantiate(selectedItem.item.importantItemDisplay, currentImportantItemCanvas.transform);
// 인벤토리 창을 비활성화
inventoryWindow.SetActive(false);
}
}
}
void Update()
{
// 사용자가 마우스 왼쪽 버튼을 클릭하고 중요 아이템의 캔버스가 활성화된 경우를 확인
if (Input.GetMouseButtonDown(0) && currentImportantItemCanvas != null)
{
// 중요 아이템 캔버스와 UI를 제거
Destroy(currentImportantItemCanvas.gameObject);
currentImportantItemCanvas = null;
currentImportantItemUI = null;
// 인벤토리 창을 다시 활성화하여 표시
inventoryWindow.SetActive(true);
}
}
기능 사용 목적 및 스크립트 사용 목적
- 중요 아이템 UI 표시: 플레이어에게 중요한 정보나 힌트를 제공하는 아이템을 시각적으로 표시하기 위해 사용. 이를 통해 게임의 스토리나 퍼즐을 더 흥미롭게 만들 수 있다.
- 동적 UI 생성 및 관리: 게임 내에서 다양한 아이템이나 이벤트에 대응하여 동적으로 UI를 생성하고 제거. 이를 통해 플레이어의 몰입감을 증가시킬 수 있다.
향후 도움이 될 점
- 재사용 가능한 UI 시스템: 이 방식은 다양한 아이템에 재사용 가능한 UI 시스템을 제공. 게임 내에서 유사한 기능을 하는 다른 아이템에도 쉽게 적용할 수 있다.
- 메모리 관리: 동적으로 UI를 생성하고 제거함으로써, 필요할 때만 메모리를 사용하고, 더 이상 필요하지 않을 때 메모리를 해제. 이는 게임의 성능 최적화에 기여한다.
'TIL' 카테고리의 다른 글
01.19(TIL-Unity) (0) | 2024.01.19 |
---|---|
01.18 (TIL-Unity) (0) | 2024.01.18 |
01.16 (TIL-Unity) (1) | 2024.01.16 |
01.15 (TIL-Unity) (0) | 2024.01.15 |
01.12 (TIL-Unity) (0) | 2024.01.12 |