게시글
질문&답변
2024.09.17
스크롤에 아이템을 선택했을때 강조하는 효과는 어떻게 구현하면 될까요?
안녕하세요! BurningCarrot입니다. 문의해 주신 내용에 답변 드립니다. 일단 OnClickInventoryItemSlot 함수에서 선택 강조 효과를 활성화 해주면서 선택한 아이템의 SerialNumber값을 InventoryUI에 m_SelectedSerialNumber와 같은 변수에 저장해 줍니다. 당연히 InventoryUI에 m_SelectedSerialNumber 변수 선언이 필요합니다. 그리고 UpdateData(InfiniteScrollData scrollData) 함수에서 InventoryUI의 m_SelectedSerialNumber 값이 m_InventoryItemSlotData.SerialNumber와 같으면 선택 강조 효과 활성화 그렇지 않으면 비활성화 해주시면 될 것 같습니다. 이렇게 하면 InventoryItemSlot 오브젝트가 재활용될 때 선택 강조 효과 처리가 정상적으로 될 것입니다.
- 0
- 2
- 24
질문&답변
2024.09.07
SingletonBehaviour 클래스의 where 제약 관련해서 질문 드립니다.
안녕하세요! BurningCarrot입니다. 문의해 주신 내용에 답변 드립니다. SingletonBehaviour 제약을 추가하는 이유는 제네릭 타입 T가 항상 SingletonBehaviour 의 하위 클래스임을 보장하기 위해서 입니다. 이 조건이 없으면 잠재적으로 모든 타입을 T로 전달할 수 있게 되며, 이로 인해 싱글톤 패턴이 깨져버리는 결과를 초래합니다. where 제약을 사용하는 또 다른 좋은 예로는 ObjectPool 클래스가 있겠습니다. 아래와 같이 Character 로 제네릭 타입 T를 제약함으로써, 오브젝트 풀에 사용할 수 있는 클래스는 Character 클래스의 하위 클래스만 가능하도록 강제할 수 있습니다. public class ObjectPool where T : Character { //....(중략) }
- 0
- 1
- 53
질문&답변
2024.09.05
SingletonBehaviour 수업 마지막 부분에 질문이 있습니다.
안녕하세요! BurningCarrot입니다. 문의해 주신 내용에 답변 드립니다. 비주얼 스튜디오에서 빌드를 하는 이유는 유니티 에디터로 돌아와 리로드 완료를 위해 대기하는 것이 번거롭기 때문입니다. 코드 수정 후 비주얼 스튜디오에서 확실하게 빌드를 끝내면 유니티 에디터로 돌아와 기다림 없이 바로 작업할 수 있습니다. 또한 급한 마음에 리로드가 끝나지 않은 상황에서 작업을 할 시 예기치 못한 에러가 발생할 수 있습니다. 그리고 간혹 유니티 에디터에서 제대로 리로드를 하지 못하는 경우도 있습니다. 이런 경우 별도의 에러는 발생하지 않기에 리로드 문제인지 다른 작업의 문제인지 혼선이 올 수 있습니다. 이런 문제들을 예방하기 위해서 코드 수정 후 빌드를 꼭 하시는 것을 권장 드립니다.
- 0
- 1
- 44
질문&답변
2024.08.13
InGame 씬 배경 화면이 나오지 않아요
안녕하세요! BurningCarrot입니다. 문의해 주신 내용에 답변 드립니다. InGameUICamera 오브젝트의 Camera 컴포넌트의 설정값들이 어떻게 되어 있으신가요? 첨부된 스크린샷처럼 되어 있는지 확인 부탁드립니다. (사진)
- 0
- 1
- 96
질문&답변
2024.08.12
InventoryUI가 특정 상황에서 ESC로 나가지지 않는 현상
안녕하세요! BurningCarrot입니다. 내용 공유해 주셔서 감사합니다. 이번 주에 강의 보완 및 자료 재업로드 하도록 하겠습니다.
- 0
- 3
- 129
질문&답변
2024.08.10
스트링을 말아서 로그 쏘실 때 두가지 방식 차이
안녕하세요! BurningCarrot입니다. 먼저 [유니티 시스템 프로그래밍 Pt.1]을 수강 해주셔서 감사합니다. 문의해 주신 내용에 답변 드립니다. 첫 번째 방법은 String Interpolation 두 번째 방법은 String Concatenation 이라고 합니다. 두 방법 간의 성능 차이는 거의 없다고 봐도 무방하며, 편의성 및 가독성 측면에서 첫 번째 방법을 사용하시는 것을 권장 드립니다. 두 가지 방법이 모두 가능하다는 것을 보여드리기 위한 것이었을 뿐 아래 코드를 첫 번째 방법으로 수정하셔도 무방합니다. Logger.Log("Load failed (" + e.Message + ")");
- 0
- 1
- 93
질문&답변
2024.08.01
UI Canvas가 여러개일 경우
안녕하세요! BurningCarrot입니다. 먼저 [유니티 시스템 프로그래밍 Pt.1]을 수강 해주셔서 감사합니다. 문의해 주신 내용에 답변 드립니다. UIManager 하위에 있는 UICamera의 Camera 컴포넌트 Clear Flags 값이 Depth only가 맞는지 확인 부탁 드립니다. Skybox일 경우 올려주신 스크린샷과 같은 현상이 발생할 수 있습니다. Skybox는 특정색으로 배경을 덮어버리므로 Priority가 더 낮은 Camera로 렌더링하는 것들이 전혀 보이지 않게 됩니다. (사진) Clear Flags 값 문제가 아니라면 UIManager 하위의 Camera와 Canvas, Title 하위의 Camera와 Canvas 컴포넌트의 값들이 어떻게 되는지 캡쳐하여 공유 부탁 드립니다.
- 1
- 1
- 166
질문&답변
2024.07.31
강의 자료 질문
안녕하세요! BurningCarrot입니다. 먼저 [유니티 시스템 프로그래밍 Pt.1]을 수강 해주셔서 감사합니다. 문의해 주신 내용에 답변 드립니다. '4.3 유저 재화 관리 및 커스텀 메뉴 (UserGoodsData, GoodsUI, CustomTools)' 강의 자료에서 GoodsUI 관련 리소스가 누락되어 있었습니다. 현재 리소스를 추가하여 재업로드해 두었습니다. 확인 부탁 드리고 앞으로 같은 실수가 재발하지 않도록 유의하겠습니다. 참고로 강의 별 업로드 자료보다는 마지막 강의의 통합 자료를 다운 받아 사용하시는 것을 권장 드립니다. 추가로 궁금하신 점이 있으시다면 편하게 질문 부탁 드립니다. 🙂
- 0
- 1
- 157
질문&답변
2024.07.23
수업내용 관련해서 몇가지 질문이 있습니다
안녕하세요! BurningCarrot입니다. 문의해 주신 내용에 답변 드립니다. 변수명 앞의 m_의 의미 m_은 멤버변수라는 의미로 저는 private 멤버변수명 앞에 m_을 붙여 public 멤버변수(m_없이 대문자로 시작)와 구분해 주고 있습니다. 유니티에서 c# 사용 시 명확한 코딩 규약이 존재하지 않기에 현업에서는 프로젝트 마다 각자의 규약을 정해 변수명을 지정해주고 있습니다. 이 강의에서는 private 멤버변수는 m_VariableName, public 멤버변수는 VariableName, 지역변수는 variableName의 규약으로 명명해주고 있습니다. 이런 코딩 규약은 수강생 여러분의 각자의 규칙에 따라 진행하셔도 상관없습니다. PlayerPrefs의 Sound값이 True임에도 불구하고 시작할 때 노래가 안 나오는 현상 이 부분은 제가 실수가 있었습니다. AudioManager의 Start 함수와 TitleManager의 Start 함수의 실행 순서는 일정하게 보장되지 않습니다. 즉 AudioManager의 Start 함수가 먼저 실행될 수도 있고 TitleManager의 Start 함수가 먼저 실행될 수도 있다는 뜻입니다. 때문에 AudioManager의 Start 함수에 해당 코드를 넣으면 버그가 발생할 수 있습니다. 따라서 AudioManager의 Start 함수에 있던 내용을 새로운 OnLoadUserData 함수를 작성하여 그 안으로 이동하였고, TitleManager의 Start 함수에서 유저 데이터를 로드한 후에 AudioManager의 OnLoadUserData 함수를 호출하는 방식으로 수정했습니다. 강의와 업로드 자료 모두 수정했으니 확인 부탁 드립니다. //AudioManager.cs public void OnLoadUserData() { var userSettingsData = UserDataManager.Instance.GetUserData (); if(userSettingsData != null) { if(!userSettingsData.Sound) { Mute(); } } } //TitleManager.cs private void Start() { //유저 데이터 로드 UserDataManager.Instance.LoadUserData(); //저장된 유저 데이터가 없으면 기본값으로 세팅 후 저장 if(!UserDataManager.Instance.ExistsSavedData) { UserDataManager.Instance.SetDefaultUserData(); UserDataManager.Instance.SaveUserData(); } AudioManager.Instance.OnLoadUserData(); StartCoroutine(LoadGameCo()); } 추가로 궁금하신 점이 있으시다면 편하게 질문 부탁 드립니다. 🙂
- 2
- 1
- 259
질문&답변
2024.07.17
싱글턴 관련해서 질문있습니다
안녕하세요! BurningCarrot입니다. 먼저 [유니티 시스템 프로그래밍 Pt.1]을 수강 해주셔서 감사합니다. 문의해 주신 내용에 답변 드립니다. static 클래스에는 static 변수와 함수만이 선언 가능합니다. 강의 내에서 singleton 인스턴스로 만드는 클래스는 static한 성격을 가지지는 않습니다. 다만 m_Instance 변수를 static 변수로 선언하고 생성된 자기 자신의 인스턴스를 m_Instance에 대입함으로써, 코드 어디에서든 m_Instance에 접근하면 동일한 인스턴스에 접근하도록 유도하는 것입니다. 이것이 singleton 패턴의 의도인 것입니다. Singleton 인스턴스의 클래스가 static한 성격이 아니라는 것이 이해가 되셨으면 좋겠습니다. 이런 클래스를 static으로 선언한다면 현재 클래스에서 동적으로 생성된 오브젝트를 다루는 여러가지 행위 자체가 불가능해 질 것입니다. 추가로 궁금하신 점이 있으시다면 편하게 질문 부탁 드립니다 🙂
- 3
- 1
- 333