답변이 늦었습니다! 죄송합니다..! 우선 본 강의는 2D를 기반으로 이루어진 강의입니다. 그래서 Canvas의 Render Mode를 ScreenSpace - Camera로 하여 2D 해상도 대응으로 소개해드리고 있습니다. 그리고 ScreenSpace - Camera로 사용하는 이유는 특별한 강점이나 필수적인 요소가 있어서라기 보다는 초보자분들을 위해 소개해드린 거라고 생각하시면 되겠습니다! 질문 감사드립니다!
질문 감사합니다! 질문해주신대로 CoinText를 굳이 Update 메소드에서 호출하는 부분은 불필요한 부분도 없지않아 있습니다. 하지만 캐시값을 한번만 불러와서 저장 후 그 데이터를 계속 사용하는 경우에는 인게임에 부담을 상당히 줄이는 것이기 때문에 UI 갱신 정도는 Update 메소드에서 처리해도 무방합니다! 그리고 Update 메소드에서 호출을 하면 실시간 반영이 되기 때문에 캐시값을 업데이트해서 불러오는 즉시 UI도 함께 업데이트가 되는 장점이 있습니다!
질문 감사드립니다! UnityMainThreadDispatcher는 비동기 작업을 위해 만들어진 클래스입니다. 이 클래스는 데이터베이스에서 데이터를 불러온 후에 데이터를 로드하는 과정에서 UI 업데이트를 위해 사용됩니다. 예를 들어 데이터베이스의 데이터를 갱신 또는 로드를 할 때 Text에 해당 데이터를 나타내는 작업을 말합니다. UI 작업은 주로 메인 스레드에서 작업이 진행되고, 데이터 갱신과 로드 작업은 다른 스레드에서 실행됩니다. 여기에서 두 스레드는 독립적으로 실행이 되고, 대부분 데이터 갱신 또는 로드하는 작업이 UI보다 느리게 처리 됩니다. 그러면 우리가 아이템 구매 후 코인을 소모하는 과정에서 코인 데이터를 데이터베이스에 갱신을 해야 하는데 갱신 작업이 더 느리기 때문에 실제 게임에 코인을 나타내는 Text를 업데이트 하지 못합니다. 이를 방지하기 위해 데이터 갱신과 로드가 완료된 후에 Text를 업데이트 하도록 하기 위함입니다. 그러면 유저 입장에서는 우리가 원하는 대로 아이템을 구매한 후에 정상적으로 Text에 잔여 코인이 표시됩니다. 그리고 UnityMainThreadDispatcher 설치 링크는 섹션1. 학습 자료 파트에 자료로 올려두었습니다!
확인이 늦었습니다. 죄송합니다..! 일단 코드와 에디터에서 설정하신 부분은 큰 문제가 보이진 않지만 3가지 정도 확인해볼 사항이 있습니다! 에디터에서 전달한 ItemPrice의 값을 다시 한번 확인해보시고, 어딘지 모를 위치에서 값이 수정되고 있을 수 있습니다. 26챕터의 강의(26:03) 내용대로 PurchaseItemBtn 메소드를 PurchaseBtn이라는 버튼 리스너를 따로 생성하여 버튼을 연결시켰는지를 확인해보셔야 할 것 같습니다. Debug.Log() 메소드를 통해 ItemPrice의 값을 출력해보시고 정확하게 전달이 되는지 확인해보시는 걸 추천드립니다. 3가지 사항을 전부 확인하심에도 불구하고 문제가 지속되면 언제든 질문해주시면 됩니다! 감사합니다!