inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

묻고 답해요

173만명의 커뮤니티!! 함께 토론해봐요.

이거 코드는 같은데 이상하게 나와요

미해결

[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part2: 자료구조와 알고리즘

어떻게 해결하나요 아래분꺼 봐도 잘 모르겠어요... 다른 폰트로 바꿨을 때 순서 맞게 잘 나오는게 있긴한데... 이렇게 위 아래 간격이 커요

  • C#
yht2933 댓글 1 좋아요 0 조회수 548

안녕하세요 유니티 강의를 보고 해당 강좌를보게되었는데요

미해결

[실전 게임 코드 리뷰] 유니티 캐주얼 게임 (엘리스팡)

유니티 강의하실때는 PoolManager를 만드셔서 활용하는것을 보여주셨는데 해당 강의에서는 Addressable을 사용만하고 Pool 은 안하시는거같아서요, 해당 Addressable을 쓸대 캐시쪽에 저장이되어서 일부러 안하시는건가요??

  • C#
  • unity
멍텅구리 댓글 1 좋아요 0 조회수 588

AI를 별도의 클래스로 관리한다는 말의 의미

해결됨

[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part7: MMO 컨텐츠 구현 (Unity + C# 서버 연동 기초)

안녕하세요 강사님! 강의를 듣다가 정확한 의미파악을 못해서 질문을 하게 되었습니다. 보통의 게임에서는 AI를 별도의 클래스로 관리한다고 하셨는데 AI라는 단위가 정확히 뭔지 모르겠어서 질문을 남기게 되었어요. 예를들어 지금 강의속 프로젝트같은 경우 UpdateIdle함수 / UpdateMoving함수 / UpdateSill함수 / UpdateDead함수가 다 따로따로 별도의 AI인건지, 아니면 위에 열거한 모든 함수가 하나의 AI로 관리된다는 의미인지 정확히 이해를 못했습니다 ㅠㅠ 어느쪽으로 이야기하신걸까요?

  • C#
  • unity
좋은 캥거루 댓글 1 좋아요 0 조회수 448

net 8.0 다운로드해도될까요?

미해결

한 장의 CheatSheet로 살펴보는 C#

다운로드화면 업데이트좀해주셨으면합니다

  • C#
  • Visual Studio Code
aaron0405 댓글 1 좋아요 0 조회수 573

Unity엔진의 GetComponent 기능

해결됨

[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part7: MMO 컨텐츠 구현 (Unity + C# 서버 연동 기초)

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#
  • unity
파스닙 댓글 1 좋아요 1 조회수 633

공간이 부족해서 기존 청크를 날리는 건 괜찮을 걸까요?

해결됨

[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버

Queue<byte[]> _sendQueue = new Queue<byte[]>(); _sendQueue.Enqueue(sendBuff); 이렇게 sendBuff를 넣어놔서 누군가 참조하고 있을 수 있기 때문에 밀어서 사용하지 않은 건데 if (CurrentBuffer.Value.FreeSize < reserveSize) CurrentBuffer.Value = new SendBuffer(ChunkSize); 이렇게 기존 청크 날리고 새로운 아이로 교체를 하면 밀어서 사용하지 않는 의미가 퇴색되는 거 아닌가요? 꽉 차서 기존 청크를 날릴 때 즈음에는 참조하고 있는 애가 없어질 확률이 높기 때문에 꽉 차서 날리는 건 괜찮은 걸까요?

  • C#
  • unity
  • 네트워크
baljang 댓글 1 좋아요 0 조회수 533

Exception message 질문

미해결

유니티 Addressable 을 이용한 패치 시스템 구현

선생님 안녕하세요. 강의 잘 듣고 있습니다. 현재 iOS 모바일 Xcode로 테스트하고 있는데, 스트라이트 다운로드를 실패해서 Addressables.UpdateCatalogs 또는 Addressables.GetDownloadSizeAsync에서 실패하게 되는 Exception message를 참고하고 싶은데 이를 어떻게 해야할지 잘 몰라서 이렇게 글을 남기게 되었습니다. (Mac OS Apple silicon에서는 빌드 후 정상적으로 동작되었고, AWS S3를 활용하고 있습니다)

  • C#
  • unity
UniUni 댓글 1 좋아요 0 조회수 667

안에 있다는 말이 엔진단 안에 있다는 말씀이신가요?

미해결

[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버

recvBuffer는 안에 있어서 Session마다 고유한 recvBuffer를 갖고 있다고 하실 때 안에 있다는 말은 ServerCore안 즉 엔진단 안에 있다는 말씀이신가요? 설명하실 때 안에 있다 언급하실 떄 마다 엔진단 안이라고 이해하고 있었는데 맞게 이해하고 있는 건가요?

  • C#
  • unity
  • 네트워크
baljang 댓글 1 좋아요 0 조회수 593

살짝 이해가 가지 않는 부분이 있네요.

미해결

[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part3: 유니티 엔진

적용?하지 않은 스크립트라도 스크립트 상에서 적용?하면 생성 되는건가요? 예를 들어 manager가 잘 작동되지만 어디에도 생성은 하지 않았잖아요, Managers.Input.KeyAction -= OnKeyboard; Managers.Input.KeyAction += OnKeyboard; 저는 게임플레이를 눌러도 Managers가 생성이 안되네요.. 근데 신기하게 input작동은 됩니다(이벤트 형식으로 바꿨습니다) DontDestroyOnLoad에도 안뜹니다... 아래는 코드입니다.

  • C#
  • unity
용기있는 청년 댓글 1 좋아요 0 조회수 528

이동 동기화 - float

미해결

[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part7: MMO 컨텐츠 구현 (Unity + C# 서버 연동 기초)

강의에선 한칸씩 이동을 하는데 저는 float 단위로 이동하게 하고 싶어 클라이언트에서 플레이어의 실제 position이 바뀌는 부분에 서버에 패킷을 보냈습니다! 서버쪽 콘솔창에는 패킷이 온전히 받아와주기 주고 받는게 돼고 있습니다. 클라이언트에도 브레이크 포인트를 찍어보니 제대로 값이 들어오고 있구요! 패킷에서 posX, posY도 docs를 참고하여 float으로 변수 타입을 바꿔줬습니다! 클라이언트에서도 실제 이동이 일어나는 부분에서 값을 바꿔주었고 이동 패킷 또한 서버에 쏴주었는데 화면에는 이동의 동기화가 이루어지지 않습니다 ㅠㅠ 이유가 뭘까요? 이정도 자료만으로 알기 힘드실 것 같지만 막혀서 질문드립니다..! 클라쪽 핸들러 코드도 강의와 똑같습니다! float 이동이나 int 단위 이동이나 이론상 변수 타입만 다르고 돼야하는 게 아닌가가 저의 생각입니다! 답변 부탁드리겠습니다!ㅠㅠ

  • C#
  • unity
자르트 댓글 1 좋아요 0 조회수 510

PercentComplete

미해결

유니티 Addressable 을 이용한 패치 시스템 구현

다운로드 받고, 로드 하는데 처음에 다운로드 받고 로드 하는건 문제 없이 되거든요. 근데 그 이후 앱을 껐다 키고 다시 로드 받으면 PercentComplete가 0.5에 멈춰요..이유가 뭘까요..? 상황을 정확히 설명하자면 씬1에서 내려받고, 씬2로 넘어가 씬1에서 내려받은 에셋을 로드 하는거에요

  • C#
  • unity
yoon0j 댓글 1 좋아요 0 조회수 563

멀티환경일때와 싱글환경일때 구현 차이 궁금증이 있습니다.

해결됨

[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part7: MMO 컨텐츠 구현 (Unity + C# 서버 연동 기초)

안녕하세요 선생님! 강의를 듣다 질문이 생겼는데요. 전체적으로 싱글게임처럼 진행되게 하고싶은데 레벨업 시스템은 만들어 그걸 서버와DB에서 관리하고 싶을때 게임룸이나 몬스터와 관련해 질문이 생겨서요. 위와 같은 경우는 몬스터, 플레이어간의 동기화 부분만 제외하고 강의에서 구현한 것처럼 똑같은 방식으로 구현하면 되는걸까요??

  • C#
  • unity
좋은 캥거루 댓글 1 좋아요 0 조회수 463

11분 50초 실행결과

미해결

[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part3: 유니티 엔진

NullReferenceException: Object reference not set to an instance of an object Managers.get_Scene () (at Assets/Script/Mangers/Managers.cs:52) ->return Instance._ui; LoginScene.Update () (at Assets/Script/Scenes/LoginScene.cs:21) -> 오류 CS:21Managers.Scene.LoadScene( Define.Scene.Game ); public class Managers : MonoBehaviour { static Managers s_lnstance; //static이라는 전역변수를 통해 오브젝트인 @manager의 유일성이 보장된다 static Managers Instance { get { lnit(); return s_lnstance; } } SceneManagerEx _scene = new SceneManagerEx(); public static SceneManagerEx Scene { get { return Instance._scene; } static void lnit() //Instance가 널인 상태를 해결하기 위해 사용됨 { if (s_lnstance == null) { GameObject go= GameObject.Find("@Managers"); if (go == null) { go = new GameObject { name = "@Managers" }; go.GetComponent<Managers>(); } DontDestroyOnLoad(go); s_lnstance = go.GetComponent<Managers>(); } } } public class LoginScene : BaseScene { protected override void Init() { base.Init(); SceneType = Define.Scene.Login; } private void Update() { if (Input.GetKeyDown(KeyCode.Q)) { public class LoginScene : BaseScene { protected override void Init() { base.Init(); SceneType = Define.Scene.Login; } private void Update() { if (Input.GetKeyDown(KeyCode.Q)) { Managers.Scene.LoadScene( Define.Scene.Game ); } } public override void Clear() { Debug.Log("Login Scene CLEAR!!!!!"); } } } 뭐가 문제인지 잘 모르겠습니다 . 구글링 해본 결과 널의 값을 가질 수 없는 오브젝트에 널을 할당했다고 그러는데 잘 모르겠습니다 ㅠㅠ

  • C#
  • unity
김승재 댓글 1 좋아요 0 조회수 316

pending이 true면 어떨 때 args.Completed.Invoke()가 실행되는 건가요??

미해결

[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버

public void Init(IPEndPoint endPoint) { // 문지기(가 들고있는 휴대폰) _listenSocket = new Socket(endPoint.AddressFamily, SocketType.Stream, ProtocolType.Tcp); // TCP로 할 때 설정 // 문지기 교육 _listenSocket.Bind(endPoint); // 식당 주소와 후문인지 정문인지 기입을 해준 것 // 영업 시작 // backlog : 최대 대기수 _listenSocket.Listen(10); SocketAsyncEventArgs args = new SocketAsyncEventArgs(); args.Completed += new EventHandler<SocketAsyncEventArgs>(OnAcceptCompleted); RegisterAccept(args); } void RegisterAccept(SocketAsyncEventArgs args) { bool pending = _listenSocket.AcceptAsync(args); if (pending == false) // 운 좋게 바로 클라이언트가 접속했을 경우 OnAcceptCompleted(null, args); } void OnAcceptCompleted(object sender, SocketAsyncEventArgs args) { } 클라이언트가 접속을 하면 pending이 false가 되어서 OnAcceptCompleted가 직접 실행이 되지만 클라이언트가 접속을 안해서 pending이 true인 경우는 직접 실행이 안되고, args.Completed.Invoke()일 때 실행이 되는 건데 진짜로 완료 되었을 때란 어떨 때라고 할 수 있을까요?

  • C#
  • unity
  • 네트워크
baljang 댓글 1 좋아요 0 조회수 663

GetButton 에서 반복문을 통한 이벤트 등록 오류에 대한 질문

미해결

[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part3: 유니티 엔진

안녕하세요. 선생님. 제가 프로그래밍 도중 Enum값 바인딩 한 부분에서 for문을 사용해서 순차적으로 이벤트를 등록하려는데 1번 케이스의 경우는 정상적으로 작동하지만 2번 케이스의 경우 정상적으로 작동하지 않습니다.. 이유가 뭘까요...? ///////// 1번 case GetButton((int)PetButton.PetType0).onClick.AddListener(() => OnTypePet(PetButton.PetType0)); GetButton((int)PetButton.PetType1).onClick.AddListener(() => OnTypePet(PetButton.PetType1)); GetButton((int)PetButton.PetType2).onClick.AddListener(() => OnTypePet(PetButton.PetType2)); GetButton((int)PetButton.PetType3).onClick.AddListener(() => OnTypePet(PetButton.PetType3)); //////// 2번 case for(PetButton i = PetButton.PetType0; i <= PetButton.PetType3;i++) GetButton((int)i).onClick.AddListener(() => OnTypePet(i));

  • C#
  • unity
New 댓글 1 좋아요 0 조회수 344

JobQueue 사용에 대한 질문

해결됨

[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버

우선 저는 단순히 Lock 만 사용하면 무수한 경합으로 인해 성능적으로 손해를 볼 수 있어 Job Queue 를 사용하는 것으로 이해를 했습니다. 그래서 이것저것 연습하면서 Job Queue 를 계속 사용하고 있는데 도중에 몇몇 의문이 생기어 질문을 드리게 되었습니다. Job Queue 를 사용하다보면 Job Queue 내에 또 다른 Job Queue 를 사용해야하는 상황이 발생하는데 이 부분은 문제가 되지 않을까요? 아래는 예시 코드입니다. public void Function() { MatchingManager.Instance.Push(() => { ... User.Party.Push(() => { ... }); }); } Lock 처럼 사용하면 된다 라는 생각은 옳은 것인가요? 아니면 Lock 과는 달리 Job Queue 사용 시 주의 할 부분이 있을까요? 항상 양질의 강의를 제공해주셔서 감사드립니다.

  • C#
  • unity
  • 네트워크
LineBread 댓글 1 좋아요 1 조회수 905

BFS 관련 질문드립니다.

해결됨

[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part2: 자료구조와 알고리즘

해당 코드에서, 예를 들어 (1, 1) 지점 기준으로 상(빨) 하(초) 좌(빨) 우(초) 이런 식으로 뚫려 있는 길이 하, 우 총 두 지점이라고 가정했을 때 큐에 저장되는 지점은 총 두 곳이겠죠? (2, 1), (1, 2) 이렇게요.. 그렇게 한 번 for 문 사이클이 돌고나면, 다시 위로 올라가서 큐에서 먼저 발견한 지점(여기서는 (2, 1)) 을 꺼내서 현재 좌표로 넣고, 그 좌표 기준으로 또 for 문을 돌고..다 끝나고 나면 이제는 (1, 2) 지점을 꺼내서 이 기준으로 for 문을 돌면서 또 큐에 갈 수 있는 지점을 저장하고.. 계속적으로 반복하다보면 결국 가장 처음에 발견한 갈 수 있는 지점 (2, 1) 과 (1, 2) 루트로 가다가 둘 중 한 루트는 빨간 벽으로 막혀서 더이상 진행이 불가능한 루트가 될 것이며..남은 한 루트는 계속 살아남으면서 갈 수 있는 지점을 '전부' 탐색 하므로 목표 지점에서 본다면 결국 해당 루트가 최단 경로가 되는 것이 맞나요?

  • C#
쩡이 댓글 1 좋아요 0 조회수 425

Bind 함수에 대한 질문입니다

미해결

[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part3: 유니티 엔진

Bind<T>를 하게 되면 해당 T 타입에 대하여 UI_Base에 있는 _objects에 저장이 되는 걸로 이해했는데, 그럴 경우 같은 Type을 서로 다른 코드에서 각자 부르게 되면 중복되어 사라지거나, 충돌이 일어나지는 않는 지 궁금합니다. 예를 들어 UI_Button에서도 Init() 함수에서 Bind<GameObject>를 하고, UI_Inven에서도 Init() 함수에서 Bind<GameObject>를 하는데 이럴 경우 _objects에 이미 GameObject type에 대한 정보가 들어있는데 같은 type을 또 한번 bind하게 되는 게 아닌가요? 왜 아무 문제가 없는 건지, 아니면 제가 C# 문법에 대해 잘못 생각하고 있는 건지 궁금합니다..ㅜㅜ 감사합니다

  • C#
  • unity
밍시 댓글 1 좋아요 0 조회수 411

json으로 저장/로드 기능을 구현해보고싶은데요

미해결

[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part3: 유니티 엔진

게임을 껏다가 켜도 현재 젠 되어있는 몹의 숫자 몹의 위치 유니티짱의 현재 체력 레벨 등등을 저장하고 로드하는것을 구현해보고싶은데 제가 가진 짧은 지식으로 이렇게 접근하는 방향이 맞는지 한번 봐주세요 ㅠㅠ 예를들어 몹이 30마리가 있으면 저장시 배열이나 딕셔너리에 현재 몹들의 데이터와 Vector3 위치 등등을 넘겨주고 json에 저장한다. 게임을 불러올때는 foreach문에서 json으로부터 받은 위치를 기반으로 전부 Instantiate한다!!..? 가 맞을까요 뱀서처럼 몹이 더 많아지거나 하면 엄청 렉걸릴것같은데 이렇게밖에 안떠오르네요 ㅠ

  • C#
  • unity
cities unity 댓글 1 좋아요 0 조회수 488

클라에서 build를 통해 만든 exe파일에서 이동동기화가 이루어지지 않습니다

미해결

[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part7: MMO 컨텐츠 구현 (Unity + C# 서버 연동 기초)

안녕하세요 강사님! 다름이 아니라 강의를 따라해보고 그 뒤에 거의 흡사하게 한 번더 다른 파일에서 코드를 구현해보고 있습니다. 그런데 서버에서 클라에 패킷보내는것까진 제대로 작동하는데(좌표확인까지됨) 클라에서 실제로 테스트를 위해 실행했을때 실질적인 플레이어캐릭터가 좌표 인식을 제대로 못하는 문제가 있습니다. 구체적으로 첫번째클라를 실행하고 플레이어이동시키고잇는도중 두번째클라가 실행되면 두번째클라에서도 첫번째클라플레이어 이동이 제대로 동기화되어보이는데 이후 두번째클라창으로 옮겨가서 플레이어를 이동시키면 첫번째클라창에서 타플레이어좌표이동이 플레이어오브젝트에 반영되지않고 방향과 상태만 반영됩니다. 이후 첫번째클라창으로 옮겨가 플레이어를 이동시키면 두번째클라창에서도 타플레이어좌표이동이 되지 않습니다. 와중에 서버에서 클라쪽에 패킷전송은 잘되고 있습니다. 게다가 타플레이어가 실제로 이동한좌표로 가려고하면 충돌인식까진되는데 화면엔 타플레이어가 이동하기전 있던곳에 그대로 서있습니다 이경우엔 보통 어떤부분이 문제인걸까요?ㅜㅜ +) break point 걸어놓고 유니티에서 확인해봤는데 유니티에서 실행하면 정상적으로 이동동기화 되는데 build를 해서 만든 exe파일에선 위와 같은 현상이 일어나며 적용이 안됩니다...

  • C#
  • unity
좋은 캥거루 댓글 2 좋아요 0 조회수 659

인기 태그

인프런 TOP Writers

주간 인기글