[240123]TIL

응징·2024년 1월 23일
0

TIL

목록 보기
21/36
post-thumbnail

스파르타 타운 구현

캐릭터 선택

public enum ChararcterType
{
    Penfuin ,
    BearJelly
}


[System.Serializable]
public class Character
{
    public ChararcterType Chararctertype;
    public Sprite CharSprite;
    public RuntimeAnimatorController Animator;
}


.../ 생략

public List<Character> charactList = new List<Character>();

enum type에 따라 리스트 가져오기

캐릭터 선택할때 필요한 정보를 담은 리스트를 type으로 구별할 수 있게끔 enum으로 구별해준다. Character정보에는 캐릭터 선택할때마다 바뀌는 Sprite와 Animator를 가져와야 하기 때문이다.


게임 매니저에서는 아래와 같이 Character List데이터를 초기화 해주고

그리고 버튼을 클릭할때 int 정수 값을 받아온다. 이는 정수값에 맞춰 ChararcterType을 가져오기 위함이다.

public void OnCleakSelectCharecter(int index)
    {
        chararcterType = (ChararcterType)index;
        var Char = GameManager.Instance.charactList.Find(item =>item.Chararctertype == chararcterType);
        CharacterSprite.sprite = Char.CharSprite;
        CharacterSprite.SetNativeSize();

        SelectCharacter.SetActive(false);
        Information.SetActive(true);


    }

int 정수값으로 charactList.Find함수를 이용해 같은 ChararcterType의 리스트를 Char에 가져온다. 그렇게 되면 Char로 리스트에 있는 애니메이터나 스프라이트를 가져 올수 있다.

enum을 사용하란 피드백은 이전부터 받고 있었다. 그러나 그 필요성을 못느끼고 있었는데 직접 해보니 확실히 숫자로만 해줬을때 보다 보기에도 수월하고, 한번 데이터 초기화를 잘못해서 데이터가 null이 됐을 때도 문제를 찾기 편했다.

RuntimeAnimatorController

public RuntimeAnimatorController Animator;

Animator : 애니메이션 시스템에서 사용되는 컴포넌트, 애니메이션을 제어하는 곳
RuntimeAnimatorController : 애니메이션 클립, 트랜지션, 파라미터 및 다른 제어 요소들을 저장하고, 런타임에서 이 정보를 기반으로 애니메이션을 실행

우리는 제어하는 곳은 이미 게임오브젝트에 있으니 실질적으로는 RuntimeAnimatorController가 필요하므로 RuntimeAnimatorController Animator 데이터를 저장한다.

리스트 [System.Serializable]

public List<Character> charactList = new List<Character>();

캐릭터 리스트를 퍼블릭으로 만들어줘도 코드 밖에서 데이터를 초기화 할수 없다.

[System.Serializable]
public class Character
{
    public ChararcterType Chararctertype;
    public Sprite CharSprite;
    public RuntimeAnimatorController Animator;
}

[System.Serializable] 처리를 해줘야 밖에서 데이터 초기화가 가능해진다.

시간 표시

실제 시간 가져오는 메소드

DateTime.Now.ToString();

yyyy : 년도
MM : 월
dd : 일
HH : 시
mm : 분
ss : 초
tt : 오전, 오후
로 가져올수도 있다.

void Update()
    {
        dateTimeText.text = GetCurrentDate();
    }

    public string GetCurrentDate()
    {
        return DateTime.Now.ToString("HH : mm");
    }

&

[게임 개발자와 업계 직무에 대한 이해 세션] 놓침. 녹화 보기

profile
Unity 개발 위주로 정리합니다

0개의 댓글