Invoke()에 대해서 자세히 알아보려고 구글링을 했을때는, Invoke("함수 이름", 시간) 시간만큼 "함수 이름"의 함수가 실행되는것을 지연시키고 실행하게끔 하는 기능이라고 되어있는데 . . 이번 강의에서는 인자없는 Invoke()와 Enum을 인자로 받는 Invoke함수를 사용하셨는데 이게 어떤것을 의미하는지 이해를 못하고있습니다 ㅜㅜ F12로 들어가서 찾아봐도 아무인자를 받지 않는것과 enum을 받는 Inovke에 대해서는 나와있지 않은것 같아 질문남깁니다.
위 부분에서 dataSize를 알아낸 후 그만큼 데이터가 도착했는지 판별하는 부분에서 질문 1. 만일 서버에 같은 세션으로부터 동시다발적으로 혹은 매우 짧은 간격을두고 Send요청이 일어나 여러 패킷이 멀티스레드로 Recv된다면 Recv버퍼에 dataSize만큼 데이터를 수신받았다고 하더라도 그 데이터가 항상 온전한 한 패킷의 연속적인 데이터로 도착하게끔 보장이 되나요? 질문 2. 만일 그렇지않고 여러 뒤죽박죽 섞인다면 어떻게 뒤섞인 데이터를 분리하나요? 옅은 지식으로나마 TCP에서 데이터의 순서는 어느정도 보장해주는것으로 알고있는데 한 패킷이 온전하게 도착할때까지 다른 전송이 대기하는지, 아니면 여러 요청중에서 먼저 도착하는 조각들을 무지성으로 때려박는지 아무리 찾아봐도 알 수 없어서 질문 남깁니다 ㅜㅜ
안녕하세요 루키스님! 항상 강의 잘 듣고 있습니다. 다름이 아니라 기존에는 N^2 의 시간 복잡도라고 말씀해주셨습니다. 그 이유도 충분히 이해했습니다. 그래서 GameRoom.cs의 _pendingList와 Flush 함수를 패킷 모아 보내는 용도로 사용하셨습니다. 그러나 사실상 Flush 내부를 자세히 보면 결국 N^2으로 시간 복잡도는 똑같다고 생각합니다. 왜냐하면 Flush 내부에서 세션용 foreach와 Send함수 내부에서 List<ArraySegment<byte>> 용의 foreach로 인해서 총 2개의 foreach가 돌기 때문에 시간 복잡도는 여저힌 N^2이지 않나요? 만약 10명의 클라이언트가 접속했을 때, [패킷 모아 보내기 할 경우] 100개의 패킷을 한 번에 보내는 것 [패킷 모아 보내기 안 할 경우] 10개의 패킷을 10번 보내는 것 으로 이해 했는데 맞을까요?
유니티 연동 #1 을 공부하는 도중 아래와 같은 오류가 떴습니다. 유니티 서버를 연동하는 부분이고 정상동작을 한다면 Hello Server I am 1 이 출력되어야 합니다. 소켓 부분에서 에러가 나서 OnConnectedCompleted 함수를 제대로 실행하시 못하는것 같습니다. 강의 파일을 받아서 실행해도 동일한 오류가 뜨고 아무리 구글링을 해봐도 해결을 못하겠어서 번거로우시겠지만 질문을 드립니다...
(2D환경을 기준으로 궁금한 점입니다....) 현재 2DPinCirlce, 2DWave까지 학습을 진행하던 중 2D 게임인데 오브젝트를 변경할 때 Transform의 Scale에서 Z까지 변경하고 있습니다. 만약 Z값을 변경하지 않고 0으로 두었을 때 대부분은 영향을 주지 않는 것 같았는데 혹시 Z값의 변경이 2D게임에서도 영향을 주는 경우가 있을까요? 1. 영향을 주지 않는다면 현재 설명하시고 있는 게임에서는 Scale의 Z값을 모두 0이라 두거나 어떤 값으로 두어도 상관이 없게 되나요? 2. 영향을 주는 경우가 있다면 어떤 경우가 있을까요? 구체적인 사례가 있을까요? 도움 부탁드립니다. 감사합니다 ^^
지금 3번째 들으면서 지나가는 수강생입니다 진짜 첫 번째 들을 때 두 번째 들을 때 세 번째 들을 때 이해되는 범위가 다릅니다 처음에는 그냥 코드 따라 치면서 완주만 해보세요. 두 번째는 코드의 흐름만 본다는 느낌으로 따라가고, 세 번째는 강의를 눈으로만 보고, 혼자 힘으로 코드를 완성해 보면 확실히 체득이 되는 느낌입니다! 다들 화이팅입니다! 저 같은 말하는 감자도 하는데 여러분도 할 수 있습니다! ps. 루키스님 강의 찍으시랴, 부트캠프 준비하시랴 많이 바쁘실텐데 항상 감사합니다!
Pin Circle 게임에서 Reset 버튼을 눌러도 스테이지1로 전환되지 않습니다. 예) 스테이지 3까지 클리어 -> 리셋버튼 클릭-> 시작버튼클릭 -> 스테이지4에서 시작(타겟에 적혀있는 스테이지 숫자만 1) 이미 클리어 될때 씬이동이 일어나기 때문입니다. 리셋버튼을 누른후에, 게임 시작을 누르면 타겟에 적혀있는 숫자는 1로 바뀌지만 스테이지1로 씬 전환이 일어나지는 않습니다. 리셋버튼을 누르면 호출되는 함수에서 Level 1로 씬 이동 해주는 코드를 넣어줘야 할것같습니다. 저는 MainMenuUI.cs 에서 이렇게 수정했습니다. -기존 코드- public void ButtonClickEventReset() { PlayerPrefs.SetInt("StageLevel", 0); } -수정 코드- public void ButtonClickEventReset() { PlayerPrefs.SetInt("StageLevel", 0); int index = PlayerPrefs.GetInt("StageLevel"); SceneManager.LoadScene(index); }
[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part7: MMO 컨텐츠 구현 (Unity + C# 서버 연동 기초)
안녕하세요. 항상 좋은 강의 감사합니다. 이 강의를 통해서 포트폴리오를 제작하려고 하고 있습니다. 그런데 이동 관련에서 문제가 생겼습니다. 2D 횡스크롤 처럼만들어서 캐릭터를 이동시키려고 합니다. 캐릭터가 이동할 때마다 패킷을 보내고 있고 상대방에게는 방향과 애니메이션은 잘 전송이 되는데 posX와 posY는 적용이 되지 않습니다. movePacket에는 State, Dir, posX, posY 값이 잘 들어가 있습니다. 서버와 클라간의 패킷값들도 정상적으로 잘 전달이 되어 있습니다. 혹시 유니티 선생님 강의와 다르게 박스콜라이더와, 리지드바디를 적용을 했는데 이것이 이동패킷에 영향을 주기도 하나요..? breakpoint를 계속 찍어가면서 오류발생구간을 찾고 있는데도 값이 매우 잘 들어가 있어서 더 혼란입니다. 어떻게 해결을 해야 하는지 여쭙고 싶습니다..
[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part7: MMO 컨텐츠 구현 (Unity + C# 서버 연동 기초)
안녕하세요. 따로 3D 프로젝트를 만들고 서버를 돌려보고 있는데요 디버그 모드로 브레이크 포인트를 잡아서 디버깅하고 싶은데 2 Players 이상으로 실행하게 되면 디버깅을 못하는지 궁금합니다.. 또 질문하는 김에 하나 더 질문하자면 2 Players로 실행을 하게 되면 첫번째로 생성된 창에서는 조명이 있지만 두 번째 실행 창에서는 뭔가 조명이 꺼져 어두워 보이는데 해결방법이 있을까요?
using System.Collections; using System.Collections.Generic; using UnityEngine; public class GameScene : BaseScene { Coroutine co; protected override void Init() { base.Init(); SceneType = Define.Scene.Game; Managers.UI.ShowSceneUI<UI_Inven>(); co = StartCoroutine("ExplodeAfterSeconds", 4.0f); StartCoroutine("CoStopExplode", 2.0f); } IEnumerable CoStopExplode(float seconds) { Debug.Log("Stop Enter"); yield return new WaitForSeconds(seconds); Debug.Log("Stop Execute!!!"); if (co != null) { StopCoroutine(co); co = null; } } IEnumerator ExplodeAfterSeconds(float seconds) { Debug.Log("Explode Enter"); yield return new WaitForSeconds(seconds); Debug.Log("Explode Excute!!!"); co = null; } public override void Clear() { } } StartCoroutine("CoStopExplode", 2.0f); BreakPoint 를 여기에 잡아서 유니티에 연결해 실행해 보았지만 두번째 StratCoroutine은 실행이 되지 않고 Stop Enter 로그도 찍히지 않고 넘어가 버립니다. 그냥 Explode Excute가 찍혀버리는데 혹시 StaretCoroutine을 중복 사용할 수 없게 업데이트가 된 걸가요?
안녕하세요! 항상 좋은 강의 잘 보고 있습니다!! 버그 수정에 대해 궁금한게 있습니다 게임을 만들던 도중에 unityChan이 바닥을 향해 달려가는 버그가 발생해서 하루 종일 디버깅 해보고 오류를 수정하려고 했지만 결국 원인을 찾지 못하고, 처음 부터 다시 했더니 진짜 갑자기 됐습니다,, 근데 저는 아직도 그때 왜 버그가 났는지 이유를 모르겠습니다,, 그래서 제가 궁금한것은 게임을 만드시는 분들도 다들 이렇게 버그의 원인을 찾지 못하는 경우가 많나요? 저는 버그의 원인을 잘 찾지 못하는것 같은데,,, 다른 분들은 어떻게 하시나요?
선생님 영상 12분까지 따라했는데 Kill Normal Gem Slim5에 대한 Quest Tracker UI가 그대로 남아있습니다. 게임 Points는 30점으로 제대로 저장이 되어있고, 게임 시작시 Quest Giver로 인해 Active Quests로 2개의 퀘스트가 Add 되어서 UI로 다시 출력이 되는데 원인을 잘 모르겠습니다. (Completed Quest로 Kill Normal Gem Slim5이 Add 된 것은 확인했습니다)