TIL_240118

Z_제트·2024년 1월 18일
0

TODAY I LEARNED

목록 보기
57/88
post-thumbnail

to do_오늘 할 일

retro_오늘 한 일(회고)

최종프로젝트 진행상황

오늘의 작업 :

  • Unit들 애니메이션 추가 및 Prefab 화
  • GameManager.cs 작업

애니메이션 작업

우선, Unit 이 될 친구들의 Assets 을 확인해보니 sprite sheet 으로 구성되어 있었고, Sprite Editor 에서 Grid By Cell Size 로 슬라이스 진행 !

슬라이스 하면서 각 애니메이션 상황별로 이름을 구분지어줬고

라잌디스.jpg

준비된 sprites 로 애니메이션 만들기 시작 !


애니메이션 작업 과정
1. sprite sheet 정리하고 (위에서 했던 작업들)
2. Hierarchy 에 특정 애니메이션에 해당하는 sprites 를 drag&drop 한 다음 Assets - @Resources - Animations 폴더에 저장. (나중에 Resources 폴더로 옮겨야지~)
3. 애니메이션 폴더를 보면 Animator Controller 와 Animation Clip 이 생긴 것을 확인할 수 있다.
4. 같은 오브젝트에 대한 다른 애니메이션을 추가하고 싶다면, Hierarchy 에 생긴 해당 오브젝트 안에 애니메이션 sprites 를 drag&drop 해주면 Animator Controller 는 기존에 생긴 것을 사용하게 되며 Animation Clip 만 따로 생기게 된다.


나는 먼저 Unit_Gun 의 Animator Controller 와 관련 Animation Clips 생성을 완료했고, Unit_Jotem 과 Unit_Warrior Controller 는 Animator Override Controller 로 만들어보았다. 아래 사진을 잘 보면 Unit_Jotem 과 Unit_Warrior Controller 의 아이콘이 Unit_Gun 과 다른 것을 확인할 수 있다.

Unit_Gun Controller


Animator Override Controller 를 만들 때 기억해야 할 점은
Inspector 창을 보면 Controller 에 기본 틀 역할을 해줄 Controller 를 넣어줘야 하고, 상황에 맞는 애니메이션들을 drag&drop 해줘야 한다.

Unit_Jotem Controller

Unit_Warrior Controller


GameManager.cs 작업

GameManager.cs (아직 작업ing)

using System.Collections.Generic;
using UnityEngine;


public class GameManager : IManagers
{

    private int playerMoney; // 플레이어 보유 돈
    private List<Unit> playerUnits = new List<Unit>(); // todo : 플레이어가 보유한 유닛 리스트 -- 리스트 자료형 체크
    private List<Tile> playerTiles = new List<Tile>(); // todo : 플레이어가 보유한 타일 리스트 -- 리스트 자료형 체크

    public static bool isGamePaused { get; private set; } // 다른 스크립트에서 쉽게 접근이 가능하도록 메모리에 할당 - static, 읽기전용

    public bool Init()
    {
        return true;
    }

    // Start is called before the first frame update
    private void Start()
    {
        // 돈 관련 UI 업데이트
        Refresh();

    }

    // Update is called once per frame
    private void Update()
    {
        if (isGamePaused)
        {
            Time.timeScale = 0.0f;
        }
        else
        {
            Time.timeScale = 1.0f;
        }
    }
    public void PauseTime()
    {
        isGamePaused = true;
    }

    public void ResumeTime()
    {
        isGamePaused = false;
    }

    // 돈 관리
    private void Refresh() // UI 에 Update 해줄 함수 구현
    {
        //moneyText.text = playerMoney.ToString();
    }

    public void AddMoney(int money)
    {
        playerMoney += money;
        Refresh();
    }

    public void Spendmoney(int money)
    {
        if (playerMoney < money) // 돈 부족 시
        {
            ShowWarning();
            Debug.Log("돈이 부족해 !!");
        }

        playerMoney -= money;
        Refresh();

    }

    // 유닛 관리
    public void AddPlayerUnit(Unit unit)
    {
        playerUnits.Add(unit);
    }

    public void RemovePlayerUnit(Unit unit)
    {
        playerUnits.Remove(unit);
    }

    // 타일 관리
    public void AddPlayerTile(Tile tile)
    {
        playerTiles.Add(tile);
    }

    public void RemovePlayerTile(Tile tile)
    {
        playerTiles.Remove(tile);
    }

    public void ResetPlayerResources() // 플레이어의 자원(돈, 유닛, 타일 등)을 초기화하는 함수
    {
        playerMoney = 0;
        playerUnits.Clear();
        playerTiles.Clear();
    }

    public void InitGame() // 게임을 초기화하는 함수
    {
        // e.g. 초기 자원 할당 등
    }

    public void GameOver()
    {

    }
    private void ShowWarning() // "잔액이 부족합니다" 팝업
    {
        //popupMsgUI.SetActive(true);
    }


}

이렇게 하는게 맞나 싶지만 일단 생각나는대로 다 적어보고 있다 !


내일은 조원분께서 작업하신 Status 관련 스크립트를 Unit 에 연결시키는 작업과
구매(유닛, 땅&방타일) 관련한 UI 제작 및 스크립트 작성 작업을 위주로 진행할듯하다 !
🔥
남은 오늘도 파이팅 !
내일도 아자아자 파이팅 !

profile
trying to make the world a better place with a cool head and warm heart

0개의 댓글