본문 바로가기
TIL

01.17 (TIL-Unity)

by 오랑이귀엽다 2024. 1. 17.

사용자 인터랙션에 대한 응답

플레이어의 입력에 반응하여 특정 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