안녕하세요! 오늘도 [아티스트] 구할려고 슬금슬금 와서 글 싸러 왔습니다.
오늘은 튜토리얼 처리에 대한 일지인데요.
왜 벌써 튜토리얼을 만지느냐? 기존 튜토리얼로 충분하지 않느냐? 에 대한 설명을 드리자면
튜토리얼로 표시되는 텍스트들이 단순히 프리팹을 불러와서 박아넣은거라
데모용 맵에서는 적절히 배치되어 있지만
다른 맵으로 진입 할 때는... 이렇게 엉망진창입니다.
아무래도 튜토리얼을 상황에 맞게 다아나믹하게 구성하는 건 제 실력으로는 힘드므로
첫 플레이는 데모용 맵을 로드하고 다음부터는 랜덤한 시드로 처리되도록 해서 쉽게 해결해보고자 합니다.
그럼 다음과 같은 로직이겠죠.
1. 첫 플레이인지 체크
2. 첫 플레이라면 준비된 맵과 튜토리얼을 배치, 아니라면 그냥 불러오기
첫 플레이인지 체크하는 변수는 뭐로 할 것인가?
Player Pref로 충분하지만 저는 SOAP(Scriptable Object Architecture Pattern)라는 에셋을 쓰고 있습니다.

Use the Soap - ScriptableObject Architecture Pattern from Obvious Game on your next project. Find this utility tool & more on the Unity Asset Store.
assetstore.unity.com

Scriptable Objects are an immensely powerful yet often underutilized feature of Unity. Learn how to get the most out of this versatile data structure and bui...
www.youtube.com
유나이트에서 스크립터블 오브젝트를 소개하면서 지향하는 바를 에셋으로 구현한 에셋이구요.
핵심은 Scriptable Object로 싱글톤과 이벤트 처리를 대신하는 것에 있습니다.
여기에 Sa.ved 를 체크 안해주면 매번 값이 Value로 리셋 되지만 체크한다면 값이 변할때 Player Pref에 값을 저장하고 Scriptable Object가 OnEnable 될 때마다 값을 불러옵니다.
이걸로 간단히 플레이 횟수를 카운팅 해주면 되겠죠?
일단 러프하게 카운팅은 플레이 버튼을 누를 때 마다 카운팅 합시다.
확인해보면... SOAP의 장점이 발휘됩니다. 런타임에서도 값 추적 가능! 디버깅에 많은 도움이 됩니다.
그리고 요렇게 해당 값을 체크해서 미리 준비된 튜토리얼 맵을 배치하면됩니다.
테스트를 위해 Sa.ved 를 체크 해제하고 수동으로 입력해서 확인해보면
굿굿 코드가 난잡해서 몇 가지 예외 처리가 더 있지만 일단 여기서 만족하고 글을 마치도록 하겠습니다.
다들 개발 화이팅!
참고로 에셋이 너무 비싸서 에셋 없이 이런 기능을 직접 구현하고 싶다면 다음 영상을 참고하시면 될거 같습니다.

SOAP (Scriptable Objects Architecture Pattern) is a Unity architecture pattern that leverages ScriptableObjects to create a more maintainable and decoupled g...
www.youtube.com
댓글 1