Unity 내배캠 TIL

C# 기초 문법 - 팀 프로젝트(3주차 4일)

오늘도즐겨 2024. 10. 6. 03:32

 

🔥10/2 수요일 목표 🔥

 

Item & Inventory UI 출력 구현하기📝

 

🤯 Problem 🤯

Player의 Inventory에서 Item이 있다면 "이미 구매한 아이템입니다."라는

문구를 띄워야 하는데, 가져올 방법을 아무리 생각해도 모르겠음..

 

💡 Solve 💡 

팀원들에게 질문을 하고, 해답을 가져옴 ❗️

# PlayerScript
public interface IPlayerCharacter
{
	public Inventory Inventory { get; set; }
}
# MainScript

	static IPlayerCharacter player;

 

 

Player 스크립트의 인터페이스 내부에 Inventory Class를 선언해 줌!

player.Inventory.Items.Contains(targetItem) ←을 사용할 수 있게 됨

 

📝  Study 📝

 Program Script 내에 Item List 작성

 Shop script 만들었다가 굳이 필요해 보이지 않아서 삭제함.

 상점의 Item List와 0번의 나가기 버튼을 ReadLine으로 인풋값을 받아 동시에 처리하기!

 

⭐️  BuyItem(result)를 사용해 CheckInput에서 들어온 값을

       BuyItem함수에서도 적용할 수 있게 됨❗️ ❗️ ❗️

int result = CheckInput(0, itemDb.Count);

if (result == 0)
{
    ShopUI();
}
else if (result >= 1 && result <= itemDb.Count)
{
    BuyItem(result);
    ShopBuyUI();
}

 

⭐️  BuyItem(int result)로 값 받아 넣기

public static void BuyItem(int result)
{    
    Item targetItem = itemDb[result-1];

    if (player.Inventory.Items.Contains(targetItem))
    {
    	Console.WriteLine("이미 구매한 아이템입니다.");
        Console.WriteLine("\n다음으로 넘어가시려면 [ENTER]를 입력해주세요.");
    }
    else
    {
        if (player.Gold >= targetItem.Price)
        {            
            Console.WriteLine("구매를 완료했습니다.");            
            Console.WriteLine("\n다음으로 넘어가시려면 [ENTER]를 입력해주세요.");
            player.Gold -= targetItem.Price;
            player.Inventory.Items.Add(targetItem);                    
        }
        else
        {           
            Console.WriteLine("골드가 부족합니다.");   
            Console.WriteLine("\n다음으로 넘어가시려면 [ENTER]를 입력해주세요.");
        }
    }

 

🔥 10/4 금요일 목표 🔥

  1. 마지막 UI점검하기 🔎

  2. 발표자료 준비 완료하기 📝