BurningCarrot 버닝캐럿
@burningcarrot
시니어 (9년 이상)·
게임 클라이언트 개발자
북미 AAA 게임 스튜디오
수강생
1,124
수강평
65
강의 평점
5.0
멘토링 신청
-
멘토링 리뷰
-
멘토링 평점
-
게시글
질문&답변
UserDataManager 클래스 hasSaveError 처리
안녕하세요! BurningCarrot 버닝캐럿입니다. 문의해 주신 내용에 답변 드립니다.개별적인 유저 데이터 클래스를 보시면 제가 SaveData() 함수에서 에러 처리를 추가로 하고 있음을 확인하실 수 있습니다. hasSaveError가 true가 되면 SaveData() 함수 중 어딘가에서 추가로 에러로그를 출력할 것입니다. 그 로그를 보시면 어디에서 버그가 발생했는지 확인이 가능해집니다. SaveData() 함수에서 에러가 발생할 원인은 PlayerPrefs를 잘못 사용하는 경우 밖에 없으므로 어떤 부분에서 PlayerPrefs를 잘못 사용했는지를 살펴보면 됩니다. (사진)
- 좋아요수
- 0
- 댓글수
- 2
- 조회수
- 27
질문&답변
제공해주신 자료에 스크립트들이 빠져있습니다
안녕하세요! BurningCarrot 버닝캐럿입니다.확인 감사합니다. 스크립트 추가하여 재업로드해 두었습니다.감사합니다.
- 좋아요수
- 0
- 댓글수
- 2
- 조회수
- 27
질문&답변
싱글턴패턴
안녕하세요! BurningCarrot 버닝캐럿입니다. 문의해 주신 내용에 답변 드립니다.Init 함수에서 m_Instance가 null이 아니면 왜 gameobject를 Destroy하나요?이 부분은 해당 인스턴스가 이미 존재하는데 씬 전환시 등에서 실수로 개발자가 중복으로 동일한 인스턴스를 생성할 경우 m_Instance가 바뀌지 않도록 하는 처리입니다. 일종의 실수 방지 처리라고 보시면 됩니다. OnDestroy 함수 호출되면 m_Instance 을 null로 만드는데 그럼 문제가 되지않은 객체도 m_Instance가 null이니 사용못하는거 아닌가요?정확한 지적이십니다. 그래서 최종본 자료를 다운로드 받아 보시면 아래처럼 그에 대한 보완 처리가 되어 있는 것을 확인하실 수 있습니다. //삭제 시 추가로 처리해 주어야할 작업을 여기서 처리 protected virtual void Dispose() { if (m_Instance == this) { m_Instance = null; } }
- 좋아요수
- 0
- 댓글수
- 2
- 조회수
- 31
질문&답변
LobbyUIController의 백키가 사라졌는데 왜그런건가요?
안녕하세요! BurningCarrot 버닝캐럿입니다.확인 감사합니다. 업적 파트에서 업로드해 드린 자료에서 해당 코드가 누락되어 재업로드해 드렸습니다. 소스코드 최종본에는 해당 코드가 살아 있습니다. 참고로 강의를 들으실 때는 소스코드 최종본을 갖고 수강하시는 것을 권장 드립니다.감사합니다.
- 좋아요수
- 0
- 댓글수
- 2
- 조회수
- 47
질문&답변
무조건 타이틀 씬부터 시작해야하나요?
안녕하세요! BurningCarrot 버닝캐럿입니다. 문의해 주신 내용에 답변 드립니다.네 제 프레임워크는 타이틀 씬부터 시작하여 로비나 인게임(맵 또는 레벨) 씬을 테스트하도록 설계되어 있습니다. 그러나 만약 특정 인게임을 바로 실행하여 테스트가 가능하도록 하고 싶으시면, 싱글턴 인스턴스를 참조할 시 존재하지 않을 경우 그 즉시 인스턴스를 씬에 생성하는 코드를 추가해 주시면 됩니다. SingletonBehaviour.cs에서 Instance 접근 시 제가 주석으로 추가한 부분을 구현해 보시면 됩니다. public static T Instance { get { if (m_Instance == null) { // 프리팹으로 씬에 실제 인스턴스 생성 // 인스턴스에서 T타입 스크립트를 가져와서 m_Instance에 대입 } return m_Instance; } }
- 좋아요수
- 0
- 댓글수
- 1
- 조회수
- 43
질문&답변
BaseUI, UIManager
안녕하세요! BurningCarrot 버닝캐럿입니다. 문의해 주신 내용에 답변 드립니다. BaseUI에서 처리하는 함수 및 기능에 대한 기준이 무엇인가?BaseUI는 각각의 UI팝업 클래스의 최상위 부모 클래스로서 모든 UI팝업에 공통적으로 필요한 기능들을 구현하는 클래스입니다.UIManager에서 처리하는 함수 및 기능에 대한 기준이 무엇인가?UIManager는 여러 UI팝업을 관리하는 클래스로, UI팝업을 열고, 닫고, UI팝업 간의 뎁스(depth)를 관리하고, 한번 생성한 UI팝업 인스턴스를 이후 팝업Pool에서 재활용할 수 있게 합니다.OpenUI를 할때는 SetParent를 BaeUI안의 Init함수에서 하고 CloseUI를 할때는SetParent UIManager에서 하는데 어떤 기준이나 지향점으로 하신건가 궁금합니다. CloseUI에서도 부모의 설정을 매니저에서 해줬으니 OpenUI도 매니저에서 설정해주면 통일성이 있지 않을까? 그런데 강사님은 어떤기준으로 하셨을까 궁금합니다.코드를 확인해 보니 현재 상황에서는 SetParent처리를 OpenUI 함수에서 처리해줘도 무방합니다. 기억을 거슬러 생각해보니 제가 BaseUI에서 SetParent를 처리해준 이유는 게임의 UI시스템이 더 복잡해져 UICanvas를 여러 개로 분리해서 사용하게 될 경우, 즉 특정 UI팝업은 UICanvasA로 특정 UI팝업은 UICanvasB로 위치시켜주는 상황이 발생할 경우를 생각했을때 BaseUI에서 처리해주는 것이 더 유연한 처리가 가능할 것으로 예측했기 때문입니다.마지막으로 코드가 이해가 잘 안되는게BaseUI에서의 CloseUI함수에서는 UIManager.Instance.CloseUI(this);호출하는데 BaseUI에서의 ShowUI는매지저 호출에 처리가 없어서이것도한 2개가 달라 많이 헷갈리네요. ㅠUI팝업을 열 때는 UIManager.OpenUI -> BaseUI.ShowUI 순으로 실행되고 UI팝업을 닫을 때는 BaseUI.CloseUI -> UIManager.CloseUI 순으로 실행됩니다.UI팝업의 닫기 버튼에 연동할 함수가 필요했기에 BaseUI.CloseUI 함수를 작성하여 연동해주었고 여기서 UIManager.CloseUI를 실행해주는 것입니다. 제가 작성한 코드를 있는 그대로 받아들이지 않고 수강생분 스스로 의문을 제기하고 비판적으로 이해하시려는 노력이 돋보이는 질문이었습니다. 게임 프로그래머로서 매우 좋은 습관을 가지신 것 같습니다. 분명 빠르게 발전하시리라 믿습니다.더 궁금한 사항이 있으시면 편하게 질문 부탁 드립니다. 😃
- 좋아요수
- 0
- 댓글수
- 3
- 조회수
- 60
질문&답변
3d프로젝트에 적용해도 무방한가요?ㅁ
안녕하세요! BurningCarrot 버닝캐럿입니다. 문의해 주신 내용에 답변 드립니다.AI 인턴이 이미 답변을 잘 해주었네요. 2D와 3D 프로젝트에 모두 적용 가능하지만 당연히 3D 관련 카메라를 추가하고 3D 모델을 적용하는 부분은 다른 강의나 자료를 통해 별도로 배우셔야 합니다. 3D 게임에서도 UI 시스템은 당연히 2D로 적용하므로 제 강의에서 제공해 드리는 UI 시스템을 그대로 사용하시면 됩니다.감사합니다.
- 좋아요수
- 0
- 댓글수
- 2
- 조회수
- 76
질문&답변
[인앱결제] 질문
안녕하세요! BurningCarrot 버닝캐럿입니다.네 UnityProjectID 등록 및 라이선스키 등록은 유니티 대시보드에서 제공하는 여러가지 서비스를 이용하기 위해 필요한 것으로 알고 있습니다.
- 좋아요수
- 0
- 댓글수
- 2
- 조회수
- 82
질문&답변
심화편 수강 등록
안녕하세요! BurningCarrot 버닝캐럿입니다.심화편 무료 등록 대상인 수강생분들에 대해서는 제가 인프런 측에 요청해 놓은 상태입니다.설 연휴가 이제 막 끝났기 때문에 곧 대응해 주시리라 생각됩니다.무료 등록이 끝난 후 전체 공지를 보내드릴테니 조금만 기다려 주시면 감사하겠습니다.
- 좋아요수
- 0
- 댓글수
- 2
- 조회수
- 62
질문&답변
Firebase iOS 빌드 시 중복심볼
안녕하세요! BurningCarrot 버닝캐럿입니다.주말동안 리서치를 해봤는데 CocoaPods로 설치한 sdk와 SPM(Swift Package Manager)에서 설치한 sdk가 중복되어서 그런 것 같습니다. 결국 라이브러리를 CocoaPods 하나로 관리하든지 SPM 하나로 관리하든지 선택해야 하는데요. 혹시 SPM에서 firebase sdk를 전부 삭제한 후 빌드하면 어떻게 되는지 확인해 주실 수 있나요?감사합니다.
- 좋아요수
- 0
- 댓글수
- 2
- 조회수
- 109




