인프런 커뮤니티 질문&답변

kawea3님의 프로필 이미지

작성한 질문수

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

플레이어 이동

플레이어 이동 강의에서 프레임관리부분 질문입니다.

21.04.20 02:10 작성

·

248

0

static void Main(string[] args)

        {

            Board board = new Board();

            Player player = new Player();

            board.Initialize(25, player);

            player.Initialize(1, 1, board.Size -2, board.Size-2, board);

            Console.CursorVisible = false;

            const int WAIT_TICK = 1000 / 30; 

            int lastTick = 0;

            while (true)

            {

                #region 프레임관리

                int currentTick = System.Environment.TickCount;

                if (currentTick - lastTick < WAIT_TICK)

                    continue; 

                int deltaTick = currentTick - lastTick;

                lastTick = currentTick;

                #endregion

                //입력

                //로직 --> 데이터가 변하는 부분은 로직. 코드로직과 렌더링을 나누면 관리하기가 편하다는 장점이 있다.

                player.Update(deltaTick); 

                //렌더링 --> 최종적으로 그릴 때 렌더링. 

                Console.SetCursorPosition(0, 0);

                board.Render();

            }

        }

-------------------------------------------------

위의 전문은, Program.cs 의 전체 코드입니다.
저 코드 중에서 

 #region 프레임관리

                int currentTick = System.Environment.TickCount;

                if (currentTick - lastTick < WAIT_TICK)

                    continue;    <- 이 코드!!

  continue; 를 쓰면 콘솔화면창에 아무것도 뜨지 않습니다.

  코드 하나하나 디버깅해봤더니 continue;를 쓰면 콘솔화면에 아무것도 뜨지 않아서 당황스럽습니다.   

  다시 영상 처음부터 따라해봐도 저부분에서 계속 저러네요.. 뭐가 문제인지 잘 모르겠습니다


  바쁘실 텐데 한가로우실때 가능하시다면 답변 부탁드리겠습니다 


답변 2

2

Rookiss님의 프로필 이미지
Rookiss
지식공유자

2021. 04. 20. 02:12

https://www.inflearn.com/questions/78754
위 문제랑 같은 상황인 것으로 보입니다.
int currentTick = Environment.TickCount & Int32.MaxValue;
로 수정해보시기 바랍니다.
TickCount가 C#에서는 다르게 동작해서 발생한 문제입니다.

0

kawea3님의 프로필 이미지
kawea3
질문자

2021. 04. 20. 02:32

와 바로 고쳐졌습니다. 늦은 시간에 답변 정말 감사드립니다!! 

kawea3님의 프로필 이미지

작성한 질문수

질문하기