Unity 2D 게임 아이템 구현

2025. 7. 18. 16:58·유니티 개발/사이드 뷰 게임

이번 글에서는 아이템을 구현을 하였는지 정리 해보겠습니다.

 

먼저 구현을 하기 전  이글을 보고 오면 편합니다.

https://dove-dove.tistory.com/8

 

 

 

스크립터블 오브젝트를 이용한 아이템을 구현 해보겠습니다.

먼저 게임 매니저에 리스트를 추가 합니다.

   public List<ItemData> itemData = new List<ItemData>();

리스트를 만들었다면 유니티에서 드래그 드롭으로 추가 하거나 아니면 

    public void GetItemData(ItemData getData)
    {
        itemData.Add(getData);
    }

    public void FileFindAddData()
    {

        string FileLocation = "Assets/Datas/ItemData";
        string[] Files= AssetDatabase.FindAssets("t:ItemData", new[] { FileLocation });

        //DirectoryInfo files = new DirectoryInfo(Path.Combine(Application.streamingAssetsPath, ""));

        foreach (string addFile in Files)
        {
            string pushFile = AssetDatabase.GUIDToAssetPath(addFile);
            ItemData pushData = AssetDatabase.LoadAssetAtPath<ItemData>(pushFile);

            if(pushData != null && pushData.ItemName != "null")
                GetItemData(pushData);
        }
    }

이렇게 파일 경로를 지정하여 추가 하실수 있습니다.

이렇게 List에 추가 하였다면 이제 가저오면 됩니다. 저는 랜덤으로 아이템이 나오도록 만들었습니다.

    public ItemData RanItemData()
    {
        ItemData data;
        int randomNum = UnityEngine.Random.Range(1, itemData.Count);
        data = itemData[randomNum];

        return data;
    }

이제 아이템을 받아 왔으면 이제 아이템 오브젝트를 생성 후 받아오면 끝 입니다.

 

public class StartItem : MonoBehaviour
{
    public float detectionRadius = 3f;
    Vector3 movePos;

    GameObject ui;

    ItemData itemData;


    // Start is called before the first frame update
    void Start()
    {
        ui = GameObject.Find("UI_Canvas");
        GetItemData();
    }

    // Update is called once per frame
    void Update()
    {
        Collider2D[] hits = Physics2D.OverlapCircleAll(transform.position, detectionRadius);
        bool playerDetected = false;

        foreach (var hit in hits)
        {
            if (hit.CompareTag("Player"))
            {
                movePos = (hit.transform.position - transform.position).normalized;
                playerDetected = true;
                break; // 플레이어만 감지하면 되므로 반복 중단
            }
        }	
    }

    public void GetItemData()
    {
        itemData = GameManager.Instance.RanItemData();
        GetComponent<SpriteRenderer>().sprite = itemData.ItemImg;
    }
}

이렇게 구현하였고 이제 실행을 해보면 

실행을 할때마다 랜덤한 아이템이 나옵니다.

'유니티 개발 > 사이드 뷰 게임' 카테고리의 다른 글

Unity 2D 플레이어 스킬 UI 구현  (0) 2025.07.18
Unity 2D 게임 UI- 아이템 설명 구현 및 상태 창 구현  (0) 2025.07.18
Unity 2D 게임 UI - ESC 눌렀을 때 멈춤 화면  (0) 2025.07.18
Unity 2D 게임 UI - 체력 바 및 시간 구현  (0) 2025.07.18
Unity 2D 스크립터블 오브젝트 생성  (0) 2025.07.18
'유니티 개발/사이드 뷰 게임' 카테고리의 다른 글
  • Unity 2D 플레이어 스킬 UI 구현
  • Unity 2D 게임 UI- 아이템 설명 구현 및 상태 창 구현
  • Unity 2D 게임 UI - ESC 눌렀을 때 멈춤 화면
  • Unity 2D 게임 UI - 체력 바 및 시간 구현
dove-dove
dove-dove
dove-dove 님의 블로그 입니다.
  • dove-dove
    dove-dove 님의 블로그
    dove-dove
  • 전체
    오늘
    어제
    • 분류 전체보기 (38)
      • 유니티 개발 (38)
        • 팀 포트폴리오 - 슈퍼 마리오 (7)
        • 사이드 뷰 게임 (22)
        • 계륵 (8)
        • 깃 주소 (1)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.4
dove-dove
Unity 2D 게임 아이템 구현
상단으로

티스토리툴바