인스턴스화 그리고 Scriptable Object

최장범·2023년 9월 18일
0

TIL

목록 보기
29/50
post-thumbnail

들어가기 앞서

유니티 숙련주차에 들어서면서 지금껏 알고는 있지만 자세하게 누군가에게 설명을 하려하면 문제가 있었던 개념들에 대해 다시한번 공부해보는 시간을 가져본다.


인스턴스화 (Instantiate)

우리가 사용하는 유니티에서의 인스턴시에이트 함수(Instantiate)는 만들어둔 게임 오브젝트를 필요할때마다 실시간으로 찍어낼때 사용합니다. 보통 총알같은 발사체들을 만들때 많이들 사용합니다.

처음에 만든 오리지널을 복제하여 클론을 리턴하는 함수입니다.

예시

 private void UpdateCharacterStats()
    {
        AttackSO attackSO = null;
        if (baseStats.attackSO != null)
        {
            attackSO = Instantiate(baseStats.attackSO);
        }

        CurrentStates = new CharacterStats { attackSO = attackSO };
        //TODO
        CurrentStates.statsChangeType = baseStats.statsChangeType;
        CurrentStates.maxHealth = baseStats.maxHealth;
        CurrentStates.speed = baseStats.speed;
    }

위 코드는 캐릭터의 스탯을 업데이트 하는 메서드인데, 여기서 baseStats의 attackSO가 null이 아닐경우 baseStats.attackSO의 복제로 초기화를 시킬때 Instantiate함수를 사용했습니다.


Scriptable Object

유니티에서 데이터를 저장하고 관리하는 데이터 컨테이너 입니다.

  • 게임에서 재사용 가능한 데이터 또는 설정을 저장하는데 사용
  • 코드와 데이터를 분리하여 코드를 더 깔끔하고 관리하기 쉽게 만듬
  • 하나의 Scriptabl Object를 여러 게임 오브젝트에서 참조, 재사용 가능합니다.
  • 값의 사본이 생성되는 것을 방지하여 프로젝트의 메모리 사용량을 줄일수 있습니다.
  • 유니티의 인스펙터 창에서 쉽게 수정,관리 할 수 있습니다.

한 줄 생각

  • 복습하고 많이 사용해보는 것 만이 내것으로 만드는 유일한 방법인 것 같다.

0개의 댓글