프로젝트를 하다보면 본인이 설정해 놓은 데이터를 효율적으로 저장하고 받아오고 싶은 경우가
생기곤한다. 하지만 개인 프로젝트를 진행할 때 Json 파일을 연동해서 받아오는 것도 좋지만
Json을 처음부터 쓰지 않는 게임일 수 도 있고 Json을 사용하기엔 애매한 데이터가 있을 수 도
있다. 오늘은 이러한 문제를 해결하기 위해서 사용되는 Scriptable Object라는 기술에 대해 설명하고자 한다.
Scriptable Object란?
클래스 인스턴스와는 별도로 대량의 데이터를 저장할 수 있는 데이터 컨테이너다.
다시 말해 본인이 만드는 게임의 기초가 되는 데이터들을 미리 저장하여 원할 때
불러와서 사용할 수 있다.
사용하는 이유
스크립터블 오브젝트의 개념을 보면 이런 생각이 문득 들 수 도 있다.
그냥 기본 스크립트를 하나 만들어서 모든 데이터를 저장해 놓고 갖다가 쓰면 되는거 아닌지
말이다. 하지만 그렇게 된다면 값의 사본이 생겨날 가능성이 있고 이는데이터의 불안정성과
메모리의 낭비를 초래하게 된다. 하지만 스크립터블 오브젝트는 인스턴스화 할 때 마다
데이터의 자체 사본이 생성되며 이는 중복되어 데이터를저장하는 것이 아닌 메모리에 데이터 사본을
하나만 저장한다. 그렇기 때문에 프로젝트의 메모리 사용을 줄일 수 있다는 장점이 있다.
주의할 점
가끔 Scriptable Object를 이상하게 사용하는 사람이 있다. 예를 들어 본인이 원하는 기능의 메소드를
저장하여 나중에 불러온다던지, 비슷한 몬스터 수십 종류의 정보를 각각 모두 스크립터블화 하여 관리한다던지
스크립터블 오브젝트의 원래 뜻에 맞지 않게 사용하는 경우가 있다.
하지만 스크립터블 오브젝트는 위에서 말했듯이 중복되지 않는 데이터를 저장하는 대량의 데이터 컨테이너
를 의미한다. 이 말은 기초적인 데이터를 저장하는 곳이지 기능을 넣고 수십 가지 데이터를 만드는 곳이
아니라는 것이다.
결론
알맞은 상황에 적절하게 사용하면 스크립터블 오브젝트는 좋은
효율을 낼 것이며 프로젝트의 작업이 한 층 수월해 질 것이다.
'TIL > Unity' 카테고리의 다른 글
[Unity] 컴포지션 패턴 (컴포지트 패턴) (0) | 2023.12.11 |
---|---|
[Unity] 주의해야 할 기능 Find (0) | 2023.11.29 |
[Unity] 로컬 좌표와 월드 좌표 (0) | 2023.11.24 |
[Unity] 유니티의 렌더링 파이프라인 (0) | 2023.11.21 |
[Unity] 유니티의 생명주기 (Unity Life Cycle) (0) | 2023.11.16 |