묻고 답해요
169만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
해결됨C# 윈폼_ 응용프로그램 개발(.NetFramework)
질문부탁드립니다!
안녕하세요. 선생님 강의보면서 회사 프로젝트작업을 혼자하고있습니다. C# MSSQL 연동을 시켜서 간단하게 시리얼넘버를 인증해주는 작업인데, sapNum을 sql로부터 받아서 씨샵 string value로 만들어서 삽입하기 목록에 다른 테이블에다가 insert를 시키고싶은데 이 과정을 아예 모르겠습니다... 뭐 리더로 돌려서 for루프로 한글자식 따와야된다는 소리도있고 여러가지 의견이있는데 정확한 답변을 몰르겠습니다. 실례가 안된다면... 고견좀 부탁드려도될까요? (스샷지움)
-
미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
기본 세팅 질문드립니다!
수업 너무 잘듣고 있어요! 다만 하다보니 궁금점이 생기는데 저랑 쌤이랑 hello world! 출력하는 화면이 조금 다른 것 같은데 세팅문제인지 아니면 신경안써도 되는 건지 궁금해요!
-
해결됨[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part2: 자료구조와 알고리즘
몇일전까지 Ctrl + F5 누르면 미로생성 잘 되었었는데요.
몇일전까지 Ctrl + F5 누르면 미로생성 잘 되었었는데요. 갑자기 오늘 해보니깐 까만색 화면에 아무것도 표시되지 않습니다. 이럴땐 어떻게 해야할까요 아마도 코드에 문제가 있는건 아닌거같습니다
-
미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part7: MMO 컨텐츠 구현 (Unity + C# 서버 연동 기초)
override 질문입니다.
안녕하세요. 강의 잘 듣고 있습니다~ ArrowController 에 보면 UpdateAnimation 을 부모의 것으로 처리하지 않기 위해 override 하고 빈 함수로 남겨놓는데요. 실제로 실무에서 이렇게 처리하는 경우가 종종 있을까요?
-
미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
Connector.Connect 질문입니다.
클라에서 Connector를 통해서 연결시도를 할 때, Connector에게 endPoint를 전달합니다 Connector에서는 socket에 endPoint.AddressFamily를 전달하는데, 제가 생각하는 것은 IP주소 '만' 전달합니다. 뒤에 SocketAsyncEventArgs args 변수를 선언하고 args.RemoteEndPoint에 endPoint를 한 번 더 전달합니다. socket.ConnectAsync할 때 args를 전달합니다. 헷갈리는 부분은 endPoint를 두번 전달하는 것입니다. socket에는 IP주소'만' 들어있어서 포트번호를 모르니 args.RemoteEndPoint에 port번호 포함 주소를 다시 준 것 인가요?
-
미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
Part 4 완료 후 코드리뷰 중 질문입니다.
OnRead함수의 역할은 args.BufferList에 연결된 RecvBuffer가 RecvAsync를 통해 받은 데이터의 사이즈와, RecvBuffer의 DataSize 프로퍼티에서 확인가능한 버퍼 내부의 해독 안 된 데이터의 사이즈를 비교하여 차이의 유무를 판단하는 것이라 이해했습니다. 그런데 OnWrite의 기능은 이해하기 어려운 것 같습니다. 간단하게나마 데이터 수신 후 오버플로우 체크용 함수로 이해는 했는데 정확한지를 모르겠네요
-
미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
BitConverter.TryWriteBytes 질문입니다.
BitConverter에 TryWriteBytes가 없어서 강사님이 올려주신 솔루션에서 확인해보니 System.Runtime.Extensions에 있는 것을 알게 되었습니다. 제 솔루션에도 using System.Runtime.Extensions를 적용하려했으나 System.Runtime까지는 있는데 Extensions가 없다고 뜨네요. 어떻게 해결할 수 있을까요?
-
미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part7: MMO 컨텐츠 구현 (Unity + C# 서버 연동 기초)
_coPatrol==null 질문
안녕하세요! 항상 강의 잘 듣고 있습니다.(키보드도 잘 쓰고 있습니다.) protected override void UpdateIdle() { base.UpdateIdle(); if(_coPatrol!=null) { StopCoroutine(_coPatrol); _coPatrol=null; } } 로 null 체크하는 부분 관련하여 질문드립니다. 강의 코드에서는 UpdateIdle() 에서 if(_coPatrol=null) 로 확인하고 Coroutine을 실행하고 있는데요, 다음과 같이 생각하여 if문을 지우고 UpdateIdle에서 곧바로 StartCoroutine을 하도록 하였습니다. protected override void UpdateIdle() { base.UpdateIdle(); _coPatrol = StartCoroutine("CoPatrol"); } -> 어차피 CoPatrol이 실행되면 State가 Moving상태가 되어 Coroutine이 2중으로 실행되지 않는다. 그러므로 StartCoroutine만 놔둬도 됨. 만약 갈 장소 검색에 실패하거나 CoPatrol이 완료되면 Idle이 되어 다음 Frame에 CoPatrol을 수행한다.(반복) 그래서 실행했을 때의 화면은 다음과 같습니다. https://youtu.be/yHUq12WU2dA 강의 코드에서는 깔끔하게 해당 목적지로 이동하고 끝이지만, 수정한 코드에서는 정신없이 왔다갔다 하다가 해당 목적지로 이동하는 현상이 보입니다. 곰곰이 생각해보았으나 마땅한 이유가 생각나지 않아 질문드립니다.
-
미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
null 오류
선생님 강의를 보며 코드를 똑같이 작성했는데 널 리퍼런스 오류가 디버깅 도중에 뜨면서 GenPacket.cs가 만들어지지 않아 진도를 못나가고 있습니다 genPackets += string.Format(PacketFormat.packetFormat, packetName, t.Item1, t.Item2, t.Item3); 이 코드에서 널 리퍼런스 오류가 뜨면서 디버깅이 중단됩니다 정확히는 t가 널이었다면서 오류가 뜹니다
-
미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part1: C# 기초 프로그래밍 입문
프로젝트 생성 시 오류
안녕하세요 강사님 가장 초반부 설정 강의를 듣고 있는데 프로젝트 파일 생성 하면 디버깅 시작 & 디버그 하지 않고 시작 버튼도 비활성화 되어있고 솔루션 탐색기 창에도 0개 프로젝트라고 해서 아무것도 보이지 않습니다. 여기저기 검색해봐도 해결책이 나오지 않아 여기에 질문 남깁니다.
-
해결됨[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part1: C# 기초 프로그래밍 입문
재귀함수 답 질문
안녕하세요 강사님. 좋은 강의 잘 듣고 있습니다! 몇가지 궁금증이 생겨 질문드립니다. static int Factorial(int a) { if (a == 0) { return 1; } return (a * Factorial(--a)); } 제가 작성한 코드입니다. 정상적으로 실행은 됩니다만, 몇가지 사소한 궁금증이 있어서 올려봅니다. 1. a==0이 참일때 return 값을 1으로 주는 것보다 n==1이 참일때 return 값을 1로 주는게 더 효율적일까요?(루프를 한번 덜 돌까요?) 2. 강사님께서 if문의 조건식을 n<=1로 작성하셨던데 n==1이 아니고 n<=1로 설정하신 이유가 따로 있을까요? 3. factorial(n-1)부분을 전위 연산자(--a)로 먼저 처리하게 하였는데, 후위연산자를 사용하여 return (a*Factorial(a--))로 하면 return (a*Factorial(a))가 먼저 실행되고 a--가 실행되기 때문에 무한루프를 돈다고 이해했는데 맞을까요? 아니라면 혹시 다른 이유가 있을까요?
-
미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part7: MMO 컨텐츠 구현 (Unity + C# 서버 연동 기초)
3d 캐릭터 posistion 과 rotation 동기화
안녕하세요. 선생님 현재 케릭터 동기화 작업까지 완료했고, 움직임 동기화를 구현 중에 있습니다. 저는 사진처럼 3d 환경에서 UI 핸들링을 이용해서 플레이어의 posistion 과 rotation 을 동기화 하려고 합니다. 선생님께서는 좌우상하를 인덱싱해서 케릭터의 움직임을 주셨는데, 제가 작업할 때 고려해야할 부분이 어떤 것들이 있을까요? enum MsgId 에 C_MOVE = 4; C_ROT = 6; S_MOVE = 5; S_ROT = 7; 를 추가했고, 아래와 같이 추가해서 작업하고 있었습니다. - 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.
-
해결됨[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part3: 유니티 엔진
싱글톤 패턴 관련 질문드립니다
직접 만든 게임을 모바일에서 출시해보고 싶어 유니티 공부를 시작했는데 서적이나 유튜브 강의를 보다보면 거의 싱글톤 패턴을 사용하며 권장하고 있습니다. 여러 커뮤니티에서 싱글톤패턴은 사용하면 안좋은점이 많고 사용하지 말아야 할 문제점 처럼 이야기 하는것을 보게되었는데실질적으로 사용을 피해야하는 안좋은 코딩 방법인지, 사용한다면 개발하는데 제한이 있는 장르가 생기는지 궁금합니다.
-
미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part7: MMO 컨텐츠 구현 (Unity + C# 서버 연동 기초)
패킷 관련해서 궁금한점이 있습니다
의도한것은 아니었지만 수업을 따라하다가서버 솔루션을 작동시키고 나오는 콘솔창에마우스 커서를 실수로 드래그를 하고유니티 클라 3개를 서버에 입장시켰었습니다처음에 왜 안되지? 하며보다가 아 콘솔창 드래그했구나라며서버솔루션 중지했다 다시 재생을 하였는데"패킷모아보내기 : N개 " 디버깅메세지가 뜨면서캐릭터들이 쌓엿던 패킷대로 이동과 행동을 한번에 처리하니순간이동을 하거나 아주 빠르게 이동하고다른 플레이어가 볼떄대각선으로 이동하는거같이 보이고 그랬습니다비슷한 상황으로어릴적 온라인 게임을 하다 이런경우를 보곤했었는데결국 효율을 위해서 패킷을 모아보내기는 해야하지만 이렇게 쌓인 패킷이 많아 한번에 처리를 하려하면클라유저간 싱크가 안맞는 상황이 벌어지는게 맞을까요?마찬가지로 락도 잘 걸어야겠네요.. 너무 무섭습니다 서버..재밋는데 진짜 어렵기도하고요 ㅋㅋ
-
해결됨[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
RegisterAccept() 질문
우선 먼저 사과드립니다... 비슷한 질문이 많은데 그 글들을 봐도 이해에 대해 확신이 서지 않아 같은 질문을 또 드리는것 같네요. 의문이 있는 부분은 SocketAsyncEvnetArgs 부분 입니다. 1. RegisterAccept 에서 AcceptAsync로 args를 처리. 2. args안에 EventHandler<T> Completed; 존재 3. args안에 OnCompleted가 존재하고, Accepted되면 OnCompleted가 실행되면서 Completed.Invoke로 OnAcceptCompleted 동작. 비동기로 accept를 처리하고, accept가 완료되면 callback을 통해서 OnAcceptCompleted 함수가 수행된다는 개념은 이해했지만 동작 메커니즘이 정확하게 이해되지 않아 질문드립니다. 아래 사이트를 참고하였을때, OnCompleted에 뭔가 정의가 있어야 함수가 실행이 될텐데요, event - C# 참조 | Microsoft Docs EventHandler<TEventArgs> 대리자 (System) | Microsoft Docs VS2019에서 정의를 타고 올라갔으나....주석 뿐인 정의만 있었습니다. Socket까지도 정의를 타고 올라갔는데 마찬가지로 프로퍼티+주석만 잔뜩있었습니다 ㅠㅠ.... 제가 옳게 이해한 것이 맞을까요?
-
미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part3: 유니티 엔진
씬 이동시 fade out in 관련 질문입니다.
안녕하세요 씬 이동시 fade out in을 구현하고 싶습니다. 구글링을 통해서 많은 자료를 봤지만 본 강의에서 설계한 Manager 패턴에 적용시키기 어려웠습니다. 가령 버튼을 누르면 fade out in이 동작하거나 monobehavior를 상속받은 별도의 FadeManager를 만드는 등 본 강의와 조금은 이질감이 느껴지는 코드들이었습니다. 기존 틀을 유지한채 fade out in을 적용할 수 있는 방법을 알 수 있을까요? 구글에 떠도는 코드를 따라하려 해도 해당 코드들은 FadeManager의 Child에 검은색 Sprite를 두고 알파값을 변경해가면서 fade in out을 구현했는데 본 강의에서 설계한 대로라면 FadeManager를 생성하고 child를 어떤 방식으로 둬야할 지 모르겠습니다.. 그냥 Manager 밑에 Sprite를 둬도 되는지 의문이 드네요. 가장 좋은 방법이 있을까요?
-
해결됨[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part1: C# 기초 프로그래밍 입문
함수를 호출할때 배열형식 인자를 참조가 아닌 값 형식으로 전달하고자 한다면 어떻게 해야할까요?
static void WantValue(int[] scores) { // 생략 } static void Main(string[] args) { int[] scores = new int[5] { 1, 2, 3, 4, 5}; WantValue(scores); } 위의 내용에서 WantValue 함수를 호출하면 참조가 전달되는 것으로 알고 있는데요. 근데 만약 참조가 아닌 값 형식으로 전달하려고 한다면 어떤식으로 해야하는지 궁금합니다.
-
미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part3: 유니티 엔진
애니매이션 질문입니다 (조금 길어요)
중간에 듣다가 점프하는 애니매이션을 넣어보고 싶어서 강의 일시정지 해놓고 점프 하는 애니매이션을 혼자 만들어봤는데 조금 이상한? 부분과 이해가 안가는 부분이 많아서 질문드립니다. 일단 점프 Animation은 유니티짱의 JUMP00 을 사용하였습니다. 점프 조건은 스페이스바를 누를 때 작동되게 하였습니다. 또한 유니티 툴에서 Parameters 부분에 float로 jump를 추가하였습니다. (점프 애니매이션을 실행할때 유니티짱의 position 이 변경이 안되는것을 확인하고 진행하였습니다.) Script코드랑 유니티툴 사진 첨부 하겠습니다. 먼저 Define.cs 에 KeyboardEvent enum타입으로 선언 하였습니다.(아직 왜 Define이라는 파일을 만들어서 관리하는지는 정확하게 이해는 안가지만 그런가보다 하고 여기 선언 하였습니다.) 그리고 왜인지는 모르겠지만 그냥 강의한거 따라서 InputManager.cs 에 사진과 같은 코드를 작성하였습니다. 그리고 이해는 아직 못하였지만 마우스 클릭을 할때 OnmouseClicked 를 Start에 만들어 주었기때문에 똑가이 만들고 선언해주었습니다 그리고 유니티 툴의 State 머신입니다. 현재 State 머신에서 WAIT를 눌러보면 WAIT -> RUN에서는 Has Exit Timed이 꺼져있고 WAIT -> JUMP에는 제가 Has Exit Time 을 껏습니다. 그리고 RUN -> WAIT : Has Exit Time OFF 상태이고 RUN -> JUMP : Has Exit Time OFF 상태입니다. 그리고 JUMP -> WAIT : Has Exit Time OFF상태이고 JUMP -> RUN : Has Exit Time ON(체크된상태) 입니다. JUMP -> RUN에서 Has Exit Time 을 꺼버리면 WAIT 애니매이션이 계속 지속이 되고 Has Exit Time 켜주면 다시 애니매이션이 동작합니다. 다만, 여기서 점프를 하고난 후에 잠시 뛰는 애니매이션을 실행하고 다시 WAIT 애니매이션을 실행합니다. 궁금한 질문 입니다. 질문1 : 막연한 질문이지만 왜 점프를 하고난 뒤에 뛰는 애니매이션을 잠깐 실행하고 멈추는 지 모르겠습니다. JUMP, RUN의 Blending부분을 안곂치게 실행을 해보아도 똑같았습니다. 질문2 : PlayerController.cs에서 작성한 void OnKeyBoardPressed(Define.KeyBoardevent evt) { if (_state == PlayerState.Die) return; Animator anim = GetComponent<Animator>(); anim.Play("JUMP"); } 이 함수 없이도 InPutManager.cs 에 if(Input.GetKeyDown(KeyCode.Space) == true) { KeyBoardAction.Invoke(Define.KeyBoardEvent.P_Space); _pressed_space = true; } if(Input.GetKeyUp(KeyCode.Space) == true) { KeyBoardAction.Invoke(Define.KeyBoardEvent.P_Space); _pressed_space = false; } 이 부분과 PlayerController.cs에서 작성한 이부분만 있어도 점프가 되던데 어떠한 식으로 함수를 주고받는 것인지 이해가 안갑니다.. Playercontroller.cs의 Start()함수에서 Managers.Input.KeyBoardAction -= OnKeyBoardPressed; Managers.Input.KeyBoardAction += OnKeyBoardPressed; 이 두줄을 주석처리하거고 실행하면 에러가나서 점프가 안되는데 왜 저런식으로 코드를 짜야 점프가 되는지 모르겠습니다. 질문 3 : Playercontroller.cs의 OnKeyBoardPressed의 인자러(Define.KeyBoardEvent evt) 이런식으로 넘겨 주고 밑에 if문으로 함수를 짯는데 Define.KeyBoardEvent evt 의 의미가 Define.KeyBoardEvent 이녀석이 true라는 말이거나 아니면 뒤에 Define.KeyBoardEvent에서 P_Space를선언 해주었다는 말이랑 같은 말인가요? 질문 4 : Start()에서Managers.Input.MouseAction -= OnMouseClicked; Managers.Input.MouseAction += OnMouseClicked; 이러한 부분이 콜백함수인것은 알겠는데 어떤식으로 호출하고 호출되는지 모르겠습니다.. 질문 5: 학교가 게임만드는 학과인데 이때까지 수업들어왔던 내용들이 이해를 못한 부분들이 많은데 그냥 이대로 수업을 쭉 듣고 혼자 실습하는 형태로 진행하는것이 좋을까요 아니면 이해가 될떄까지 늘어지는게 좋은방법인가요..?? 2학년인데 게임개발 잘하시는 분들보면 현타가 옵니다..ㅠㅠ 질문내용을 이해하기 어려우실 수 있는데 답변드린다면 정말정말 감사하겠습니다. 감사합니다.
-
미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
가시성이라는게
가시성이라는게 사람?코드?의 가시성이 아니라 메모리간의 가시성이라고 이해하는게 맞나요? 그 직원(메모리)들이 잘 볼수있도록 전광판을 업데이트 하는 메모리들간의 가시성?이 맞나요? 어렵네용ㅎㅎ
-
미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
이건 컴퓨터 성능 때문일까요?
안녕하세요, 선생님 c# 게임 서버 강의를 수강하다가 선생님과 다르게 작동하는 부분이 있어서 질문드립니다 6번째 강의인 컴파일러 최적화 강의에서 코드를 실행하면 4:25초경에 쓰레드 시작! 쓰레드 종료! Stop 호출 종료 대기중 종료 성공 이 순서대로 선생님은 실행이 되는데요, 저는 쓰레드 시작! Stop 호출 종료 대기중 쓰레드 종료! 종료 성공 순서로 쓰레드 종료!가 더 늦게 뜨네요 강의에서처럼 _stop에 volatile을 붙이면 선생님이랑 같은 값이 나오긴 하는데 컴퓨터 성능 차이 때문일 수 있나요? 코드가 다른 부분은 없습니다. 몇 번이고 확인했어요 감사합니다!