[CreatAssetMenu(fileName = "", menuName = "")
public class PlayerSO : ScriptableOject
{
publlc int hp = 10;
}
요런 형태로 상속을 바꿔주고 CreatAssetMenu를 이용해 어떻게 생성하는 툴을 만들어 주는것이다.
여기까지는 기존에 알던 내용이라 개념만 알고 있어 활용이 어려웠고 왜 써야하는지 몰랐는데.. 다음 유니티 블르고를 보고 배운점이 많았다.
기본적으로 모듈식 게임을 만드는데 크게 사용된다. 모듈식 게임을 만들게 되면 테스트 및 확장/축소가 용이해지게 되므로 게임을 훨씬 더 효율성 있게 만들 수 있다. 내용을 좀 더 정리해 보면
요렇게 데이터를 구성가능하다!
3.열거형 : 열거형을 사용하는것은 코드 간소화에서 매우 유용하다. 이런 열거형을 스크립터블 오브젝트로 사용하게 되면 데이터 추가및 확장이 매우 간편해지고 스크립터블 오브젝트는 추가 필드와 메서드를 가질 수 있는 장점이 있다. 특히나 열거형의 경우 배열의 순서가 바뀌었을 때 일어나는 의도치 않은 버그들을 예방 할 수 있기 때문에 장점이 있다.
4.델리게이트 오브젝트 : 메서드 역시 만들 수 있으므로 데이터 보관용도로 로직이나 동작을 저장 할 수 있고 로직을 옮기게 되면 동작을 더 모듈화 할 수 있다.
5.이벤트 채널 : 대규모 프로젝트의 경우 데이터나 상태를 공유하지만 오브젝트간의 직접적인 참조는 방지해야한다. 왜냐하면 종속관계가 대규모가 되게 될수록 관리하기 힘들어지고 버그도 많이 일어나기 때문이다. 이를 위해 싱글톤을 사용하게 되는데 싱글톤 역시 전역상태를 다루고 단위 테스트가 힘들어지게 되는 단점이 있다. 이를 해결하기 위해 게임오브젝트 통신에 도움이 되는 스크립터블 오브젝트 기반 이벤트를 사용하는것이다. 관찰자 디자인 패턴을 구현하는 것인데
스크립터블 오브젝트를 기반으로 이벤트를 관리 할 수 있다.
6.런타임 세트 : 런타임 시 씬에서 오브젝트나 컴포넌트를 찾아야 하는 상황이 많은데 이럴때 스크립터블 오브젝트를 특수한 데이터 컨테이너를 사용하면 최적화측면에서도 좋고 테스트와 모듈성에서도 좋아진다.