[Unity]TIL (36) | 2023.09.12 | 유니티 상점 스킨 적용

kjg5370·2023년 9월 12일
0

TIL

목록 보기
36/91
post-thumbnail

들어가기 앞서

팀 프로젝트의 3일차입니다. 상점에 아이템들을 띄우는 작업은 끝났고
아이템을 사는 부분이나 아이템을 적용하여 게임플레이에 보여지는 부분을 진행하였습니다.

오늘 배운 것

  • 아이템 사기
    일단 아이템을 사용하려면 아이템을 플레이어가 상점에서 사야지 아이템을 사용할 수 있게 만들었습니다.
    일단 BuyItem이라는 스크립트를 만들어서 ShopUIManager가 아이템의 프리팹을 불러와 생성해주므로
    프리팹의 이미지를 버튼으로 만들어서 할당해주었습니다.

    • BuyItem.cs
      public class BuyItem : MonoBehaviour
      {
          public Image buttonImage;
          public Image itemImage;
          public GameObject checkImage;
          public static BuyItem[] selectedItem = new BuyItem[2];
      
          public ItemType itemType; // 아이템 종류
      	bool isItemDark = false;
      
          public void clickBtn()
          {
              // 현재 아이템이 볼 아이템인 경우
               if (itemType == ItemType.Ball)
              {
                  selectItem(0);
                  DataManager.DMinstance.selectedballImage = selectedItem[0].itemImage.sprite;
              } 
               // 현재 아이템이 paddle 아이템인 경우
              else if (itemType == ItemType.Paddle)
              {
                  selectItem(1);
                  DataManager.DMinstance.selectedPaddleImage = selectedItem[1].itemImage.sprite;
              }
          }
          private void selectItem(int num)
          {
              if (selectedItem[num] != null && selectedItem[num] != this)
              {
                  selectedItem[num].checkImage.SetActive(false);
                  selectedItem[num] = null;
              }
              // 아이템 어두운 상태에 따라 이미지 색상을 조절
              if (!isItemDark)
              {
                  buttonImage.color = Color.gray; // 아이템을 어둡게 표현
                  isItemDark = true;
                  checkImage.SetActive(true);
                  selectedItem[num] = this;
              }
              else
              {
                  // 이미 어둡게 변한 아이템을 다시 누를 때 checkImage를 활성화
                  selectedItem[num] = this;
                  checkImage.SetActive(true);
              }
          }
      }

clickBtn()함수는 생성된 아이템들을 플레이어가 눌렀을 때 실행되고 공과 패들의 스킨이 있는데 2개 크기의 BuyItem[]을 선언해서 하나씩만 고를 수 있도록 저장했습니다.

  • 아이템 적용
    이제 플레이어가 고른 아이템을 인게임에 적용시키는 작업을 하였습니다.
    이것은 데이터매니저를 이용했습니다.
    데이터매니저에

    public Sprite selectedPaddleImage;
    public Sprite selectedballImage;

    변수를 만들어두고 위 코드의 아이템 선택 부분에서 값을 할당합니다. 그다음 게임이 진행되는 메인 씬에서
    게임이 시작될 때 호출되는 gameManager에 패들의 스킨을 입히는 코드

    if(DataManager.DMinstance.selectedPaddleImage != null)paddleImage.sprite = DataManager.DMinstance.selectedPaddleImage;

    를 넣어주고 공은 프리팹으로 만들어져서 생성되기때문에 프리팹의 공에 붙어있는 BallScript 에
    private void Start()
        {
            if(DataManager.DMinstance.selectedballImage != null)_sprite.sprite = DataManager.DMinstance.selectedballImage;
        }
    이렇게 추가를 해주었습니다.
    게임을 실행해보면

    잘 적용되는 것 같습니다.

진행 사항

패들 스킨 추가
공 스킨 추가
스킨 적용
버프 아이템 블록에 할당 (미완)
상점 능력치 부분 추가(미완)
공 스킨 변경(미완)
카메라 이동(미완)

내일 할 일

  • 하루 계획
    • 오전
      • 09:00 ~ 10:00 : 알고리즘 코드카타
      • 10:00 ~ 10:30 : 팀 회의
      • 10:30 ~ 14:00 :
        • 오늘 계획 (Task)
      • 12시-1시: 점심식사
    • 집중 코딩
      • 14:00 ~ 18:00
    • 저녁
      • 6시-7시: 저녁식사
      • 19:00 ~ 20:00 : 집중 코딩 시간 부족한 부분 해결해보기
      • 20:00 ~ 21:00: TIL 작성, 마무리 회고 진행
      • 21:00 : 내일은 위한 휴식!
profile
학생입니다

0개의 댓글