제가 혼자 만들어보면서 느꼈던 점은, "session에서 lock을 걸지 않고 recvbuffer의 writesegment를 가져오거나 DataSegment를 읽어올 때 lock을 걸면 최소한의 범위로 할 수 있을 것 같다" 입니다. 강사님께선 Session의 Send, RegisterRecv, OnRecvCompleted에 하나의 _lock 오브젝트로 전부 잠구셨는데 이렇게 되면 예를 들어 OnRecvCompleted를 호출해서 _lock 범위 내에서 처리하는 동안 Send를 호출하면 Send는 OcRecvCompleted가 끝날 때 까지 대기해야하는 상황이 발생하지않나라는 걱정이 조금 됩니다.
Loader LoadJson<Loader,Key,Value>(string path) where Loader : ILoader<Key,Value> { TextAsset textAsset = Managers.Resource.Load<TextAsset>($"Data/{path}"); return JsonUtility.FromJson<Loader>(textAsset.text); } 여기서 Loader << 이 부분이 헷갈려서 몇가지 질문 남깁니다. 1. Loader라는 타입을 따로 정의하지 않았는데, 이게 제네릭메소드 T 와 같은 의미이며, Loader라고 정의한거는 그냥 보기 편하게 T 를 Loader라고사용했다 보면 되는건가요 ? 2. LoadJson<Loader,Key,Value> 에서 Loader가 무슨의미인지 모르겠습니다. Loader에 대한 정보가 없으니, 정보를 얻기 위해 그냥 단순 : ILoader<Key,Value>를 상속받는 클래스를 저기에 입력하라는 의미로 받아드리면 될까요 ?
안녕하세요 강의 14분의 GetButton((int)Buttons.PointButton).gameObject.AddUIEvent(OnButtonClicked);와 관련해 문의드립니다. 해당 코드의 AddUIEvent() 함수에 인자로 들어간OnButtionClicked는 public void OnButtonClicked(PointerEventData data) { ++_score; } 형태를 갖고 있습니다. AddUIEvent() 함수는 GameObject, Action<PointerEventData>, Define.UIEvent 자료형을 인자를 받아야 합니다. 여기서 첫번째 인자는 Extension Method 기능으로, 세번째 인자는 default 값으로 처리되었습니다. 두 번째 인자로 사용된OnButtionClicked 함수의 원형을 보면 매개변수로 PointerEventData 자료형의 값을 받아야 하지만 여기서는 단순히 함수명만 적었음에도 오류가 발생하지 않습니다. 이 이유는 AddUIEvent 함수를 통해 OnPonterClick()에서 OnClickHander.Invoke(eventData)로 PointerEventData를 보내주고 있으니 알아서 처리되는 것인가요? 감사합니다.
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. Resource 매니저를 사용하는게 코드를 관리하는데 용이 하다 하셨는데 관리가 용이해진다라는게 정확히 어떤건지 모르겠습니다. lapping을 함으로써 얻는 이점이 정확히 무엇인가요??
가로로 한 번도 가지 않았을 경우 = 랜덤으로 뽑을 수 있는 값 = 0 가로로 한 번 이동했을 경우 = 랜덤으로 뽑을 수 있는 값 = 1 x - 1 * 2 = x - 2 가로로 두 번 이동했을 경우 = 랜덤으로 뽑을 수 있는 값 = 2 x - 2 * 2 = x- 4 이렇게 계산해서 인덱스 x가 마이너스를 가질 경우도 있을 거 같은데 잘 작동하는 거 보면 ... 제 생각에 오류가 있나요?
[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part1: C# 기초 프로그래밍 입문
dic.Add(1, new Monster(1)); dic[5] = new Monster(5); 이렇게 두가지 방법으로 값을 넣는 다 하셨는데 dic[5]는 5번째 인덱스에 id값을 5번인 몬스터의 값을 넣는게 아닌가요? 디버깅했을 때 0번재랑 1번째에 값이 들어가있어서 이해가 잘 가지 않습니다.
[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part7: MMO 컨텐츠 구현 (Unity + C# 서버 연동 기초)
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 구글 프로토콜 최신 버전으로 받고 강의를 따라하는데 enum MsgID를 코드를 작성하고 실행시키면 cs파일이 생성이 안됩니다.
[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part7: MMO 컨텐츠 구현 (Unity + C# 서버 연동 기초)
1. 지금 타일별로 정수형(int)으로 이동하고, 맵도 이동가능한 지역,불가능한 지역 0,1 정수형(int)으로 따로 값을 저장해서 처리하고 있는데 만약에 실수형(float)으로 구현할때는 어떤식으로 구현하나요? 1칸식 딱딱하게 움직이는거보다 좀더 세밀하게 움직이고 충돌처리하는 프로젝트는 클라을 믿고 서버에 위치값만 보내야만 할까요? 그게 구현하기 편하긴 하지만 어떻게 구현하는지 궁금하네요 2. 기본적으로 유니티를 써봐서 3강 유니티 강좌는 빼고 듣고 있습니다. 7강좌 오니까 따로 코드를 짜놓으신게 있으시더군요. 코드를 보니까 전체적인 흐름 몇몇 코드는 왜이렇게 했는지 코드 의도? 것도 잘 모르겠더라구요, 생소한 문법도 몇몇 보이고 실무기준으로 코드를 만드시니 비경험자 입장에서는 조금 이해학 어렵네요 3강을 들어보는게 좋을까요?
Singleton 패턴을 사용하는 이유를 알고 넘어가야 나중에 응용할 때 도움이 될 거 같아 질문 남깁니다. Find함수가 다소 무겁다고 들었습니다. Managers s_instance 변수를 전역으로 선언해줌으로써 다른 오브젝트에서 Managers Component를 얻기 위해 불러들일 때 Find함수를 사용하는것을 최소화하여 과부화를 줄이기위해 사용하는게 맞을까요? 아니면 singleton 디자인 패턴에 대한 또 다른 사용 이유가 있을까요?
[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part7: MMO 컨텐츠 구현 (Unity + C# 서버 연동 기초)
몬스터 가짓 수를 늘리던 도중에 CurrentGrid가 null로 떠서 보니까 씬이 로드되면서 CurrentGrid가 채워지는데 채워지기도 전에 먼저 MonsterController의 Init이 실행되면서 생기는 문제였습니다. 구글링 해보니까 컴포넌트 Start함수의 실행순서를 변경할 수 있다기에 그렇게 해서 오류를 해결하긴 했는데 뭔가 시한폭탄을 하나 숨겨둔 느낌이라 좀 찜찜한 느낌이 듭니다. 원래 유니티 Start함수의 실행순서에 관련한 오류가 종종 있는 편이셨는지 여쭙고 싶습니다!