묻고 답해요
169만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
해결됨[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part3: 유니티 엔진
recursive 조건을 만든 이유가 잘 이해가 되지 않습니다.
GetComponentsInChildren 함수가 자식 오브젝트의 특정 컴포넌트를 모두 반환해준다면 recursive가 true이거나 false이거나 모두 이 함수를 사용하면 되는 것이 아닌가 해서 질문드립니다. recursive 매개변수를 사용하여 조건을 분리한 이유가 무엇인가요?
-
미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part7: MMO 컨텐츠 구현 (Unity + C# 서버 연동 기초)
nupkg to dll 방법 공유합니다
nuget package를 dll파일로 변환하는 방법 공유합니다저도 몰라서 한참 헤맸기 때문에 공유하면 좋을것 같아서요!https://youtu.be/JgkPoxeb714이 방법대로 하면 됩니다!
-
미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part7: MMO 컨텐츠 구현 (Unity + C# 서버 연동 기초)
맥 OnRecvCompleted transferredBytes 에러
구글 프로토 버퍼 연동을 하던중서버에서는 패킷을 보내도 클라쪽에서 recvArgs 는 받은 바이트배열이 하나도 없는데 구글 프로토버프 패킷 형식이나 그냥 바이트 배열을 보내봐도 똑같습니다.분명히 socketError == SocketError.Success인데 받은 바이트가 없다는게 이해가 안됩니다ㅠ혹시 왜 그런지 알 수 있을까요?
-
미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part1: C# 기초 프로그래밍 입문
Sort 연습문제 질문이 있어요
// 값 순서대로 정렬하기 static void Sort(int[] scores) { for (int i =0; i < scores.Length; i++) { //제일 작은 수 찾기 -> 제일 작은 숫자가 있는 index 찾기 int minIndex = i; for (int j= i; j <scores.Length; j++) { if (scores[j] < scores[minIndex]) minIndex = j; } // 자리바꾸기 (swap) int temp = scores[i]; // 값을 덮어씌우면 날라가기 떄문에 임시로 저장 해둔다 scores[i] = scores[minIndex]; scores[minIndex] = temp; // 임시로 저장해둔 값을 다시 minIndex에 옮긴다 } } 여기서 특히 이부분이 이해가 안되고 있어요 for (int j= i; j <scores.Length; j++) { if (scores[j] < scores[minIndex]) minIndex = j; }첫번째 루프때 int i = 0이 되고 for 문에서 j=i라고 해서 j도 0이 됩니다 그런다음에 if (scores[j] < scores[minIndex]) 여기에 따라서 scores[0] < scores[0] 이렇게 되는거 아닌가요?? 둘다 첫번째 루프고 minIndex도 i의 값을 따르니깐요... minIndex = j 로 넘어 갈수 없다고 생각하고 있습니다..
-
미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part3: 유니티 엔진
NullReferenceException 오류 입니다 ㅠㅠ..
void Start() { Bind<Button>(typeof(Buttons)); Bind<TextMeshProUGUI>(typeof(Texts)); Get<TextMeshProUGUI>((int)Texts.ScoreText).text = "Bind Test"; } void Bind<T>(Type type) where T : UnityEngine.Object //reflection 사용 { string[]names = Enum.GetNames(type); UnityEngine.Object[] objects = new UnityEngine.Object[names.Length]; _objects.Add(typeof(T), objects); for (int i = 0; i<names.Length;i++) { objects[i] = Util.FindChild<T>(gameObject, names[i], true); } } T Get<T>(int idx) where T : UnityEngine.Object { UnityEngine.Object[] objects = null; if (_objects.TryGetValue(typeof(T), out objects)==false) return null; return objects[idx] as T; }기존에 Text를 TextMeshProUGUI로 바꾸고 using TMPro;도 추가했는데도 계속해서 해당 오류가 발생하네요...도저히 원인을 못찾겠습니다 ㅠㅠ
-
해결됨[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
바이트 오더 정렬 안 해도 상관없나요?
패킷 코드를 봐도 딱히 호스트,네트워크 간의 바이트 정렬은 하지 않던데내부에서 간단히 테스트할 꺼라 처리를 하지 않으신 건가요? 아니면 다른 방법으로 하셨는데 제가 못 찾는 걸까요
-
미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part1: C# 기초 프로그래밍 입문
강의 리뉴얼
안녕하세요 루키스님!리뉴얼 된 강의를 보다가 갑자기 사라졌는데, 혹시 새로 만드시는 중이신가요?만약 새로 만드시는 중이시라면 혹시 언제쯤 강의가 완성될지 알 수 있을까요?
-
해결됨[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
null체크후 clientSession.Room을 참조하면 Push 할때 null이 넘어갈수 있는거 아닌가요?
안녕하세요. 강의 열심히 보고 있습니다. ^^JobQueue #1 강의중 19분51초에서..멀티스레드 환경에서14줄에서 null 체크를 하고접속이 해제된다면17줄에 room을 넣을 때null이 반환되지 않을까요?? 검색해봐도 해당 내용은 없는거 같아서 질문 드립니다.
-
미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part3: 유니티 엔진
navMeshAgent에서 맵을 bake 하는데 장애물 안쪽이 자꾸 bake가 됩니다.
장애물도 navigation static이고 not walkable인데도 저 안쪽이 자꾸 걸을 수 있는 곳으로 표시가 되어서 몬스터들이 랜덤으로 walkable좌표를 찍는데 저기로 잡아서 자꾸 벽안으로 기어들어갈려고합니다. 제기억에 장애물을 설치해 놓으면 그 안쪽도 당연히 장애물로 막혀서 걸을 수 없는 구역으로 나왔던거 같은데... 왜이러는 걸까요?
-
미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part1: C# 기초 프로그래밍 입문
수업 순서
프로그래밍을 이 강의로 처음 들어서 이해가 안 가는게 엄청 많은데 특히 Text RPG 부분이 어려워요 초반 강의랑 객체지향등 다른 강의를 다 듣고 Text RPG 강의를 봐도 순서가 괜찮은가요?
-
미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part2: 자료구조와 알고리즘
이거 코드는 같은데 이상하게 나와요
어떻게 해결하나요 아래분꺼 봐도 잘 모르겠어요...다른 폰트로 바꿨을 때 순서 맞게 잘 나오는게 있긴한데...이렇게 위 아래 간격이 커요
-
미해결[실전 게임 코드 리뷰] 유니티 캐주얼 게임 (엘리스팡)
안녕하세요 유니티 강의를 보고 해당 강좌를보게되었는데요
유니티 강의하실때는 PoolManager를 만드셔서 활용하는것을 보여주셨는데 해당 강의에서는 Addressable을 사용만하고 Pool 은 안하시는거같아서요, 해당 Addressable을 쓸대 캐시쪽에 저장이되어서 일부러 안하시는건가요??
-
해결됨[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part7: MMO 컨텐츠 구현 (Unity + C# 서버 연동 기초)
AI를 별도의 클래스로 관리한다는 말의 의미
안녕하세요 강사님! 강의를 듣다가 정확한 의미파악을 못해서 질문을 하게 되었습니다.보통의 게임에서는 AI를 별도의 클래스로 관리한다고 하셨는데 AI라는 단위가 정확히 뭔지 모르겠어서 질문을 남기게 되었어요.예를들어 지금 강의속 프로젝트같은 경우 UpdateIdle함수 / UpdateMoving함수 / UpdateSill함수 / UpdateDead함수가 다 따로따로 별도의 AI인건지, 아니면 위에 열거한 모든 함수가 하나의 AI로 관리된다는 의미인지 정확히 이해를 못했습니다 ㅠㅠ 어느쪽으로 이야기하신걸까요?
-
미해결한 장의 CheatSheet로 살펴보는 C#
net 8.0 다운로드해도될까요?
다운로드화면 업데이트좀해주셨으면합니다
-
해결됨[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part7: MMO 컨텐츠 구현 (Unity + C# 서버 연동 기초)
Unity엔진의 GetComponent 기능
CreatureController cc = go.GetComponent<CreatureController>();if (cc != null)cc.OnDamaged();//go는 MonsterController를 가지고 있음에서 CreatureController를 상속박은 MonsterController의 오버라이드한 함수가 실행되는데CreatureController cc = go.GetComponent<CreatureController>();는CreatureController cc = new MonsterController;와 같은 기능이기 때문에 그런걸까요?(UNITY GetComponent의 기능인가?)만약 그렇다면 분명 GetComponent로 CreatureController를 불렀는데 어떻게 MonsterController가 리턴되었는지도 궁금합니다 GetComponent의 UNITY 내부 엔진 기능인가요?
-
해결됨[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
공간이 부족해서 기존 청크를 날리는 건 괜찮을 걸까요?
Queue<byte[]> _sendQueue = new Queue<byte[]>();_sendQueue.Enqueue(sendBuff);이렇게 sendBuff를 넣어놔서 누군가 참조하고 있을 수 있기 때문에 밀어서 사용하지 않은 건데 if (CurrentBuffer.Value.FreeSize < reserveSize)CurrentBuffer.Value = new SendBuffer(ChunkSize); 이렇게 기존 청크 날리고 새로운 아이로 교체를 하면 밀어서 사용하지 않는 의미가 퇴색되는 거 아닌가요? 꽉 차서 기존 청크를 날릴 때 즈음에는 참조하고 있는 애가 없어질 확률이 높기 때문에 꽉 차서 날리는 건 괜찮은 걸까요?
-
미해결유니티 Addressable 을 이용한 패치 시스템 구현
Exception message 질문
선생님 안녕하세요. 강의 잘 듣고 있습니다.현재 iOS 모바일 Xcode로 테스트하고 있는데, 스트라이트 다운로드를 실패해서 Addressables.UpdateCatalogs 또는 Addressables.GetDownloadSizeAsync에서 실패하게 되는 Exception message를 참고하고 싶은데 이를 어떻게 해야할지 잘 몰라서 이렇게 글을 남기게 되었습니다. (Mac OS Apple silicon에서는 빌드 후 정상적으로 동작되었고, AWS S3를 활용하고 있습니다)
-
미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
안에 있다는 말이 엔진단 안에 있다는 말씀이신가요?
recvBuffer는 안에 있어서 Session마다 고유한 recvBuffer를 갖고 있다고 하실 때 안에 있다는 말은 ServerCore안 즉 엔진단 안에 있다는 말씀이신가요? 설명하실 때 안에 있다 언급하실 떄 마다 엔진단 안이라고 이해하고 있었는데 맞게 이해하고 있는 건가요?
-
미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part3: 유니티 엔진
살짝 이해가 가지 않는 부분이 있네요.
적용?하지 않은 스크립트라도스크립트 상에서 적용?하면 생성 되는건가요?예를 들어 manager가 잘 작동되지만어디에도 생성은 하지 않았잖아요,Managers.Input.KeyAction -= OnKeyboard;Managers.Input.KeyAction += OnKeyboard;저는 게임플레이를 눌러도 Managers가 생성이 안되네요..근데 신기하게 input작동은 됩니다(이벤트 형식으로 바꿨습니다) DontDestroyOnLoad에도 안뜹니다...아래는 코드입니다.
-
미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part7: MMO 컨텐츠 구현 (Unity + C# 서버 연동 기초)
이동 동기화 - float
강의에선 한칸씩 이동을 하는데 저는 float 단위로 이동하게 하고 싶어 클라이언트에서 플레이어의 실제 position이 바뀌는 부분에 서버에 패킷을 보냈습니다!서버쪽 콘솔창에는 패킷이 온전히 받아와주기 주고 받는게 돼고 있습니다. 클라이언트에도 브레이크 포인트를 찍어보니 제대로 값이 들어오고 있구요!패킷에서 posX, posY도 docs를 참고하여 float으로 변수 타입을 바꿔줬습니다!클라이언트에서도 실제 이동이 일어나는 부분에서 값을 바꿔주었고 이동 패킷 또한 서버에 쏴주었는데 화면에는 이동의 동기화가 이루어지지 않습니다 ㅠㅠ 이유가 뭘까요?이정도 자료만으로 알기 힘드실 것 같지만 막혀서 질문드립니다..!클라쪽 핸들러 코드도 강의와 똑같습니다!float 이동이나 int 단위 이동이나 이론상 변수 타입만 다르고 돼야하는 게 아닌가가 저의 생각입니다! 답변 부탁드리겠습니다!ㅠㅠ