강의

멘토링

커뮤니티

Inflearn Community Q&A

gangnam's profile image
gangnam

asked

Dr. Ko's Unity Hyper Casual Game Series 02: Learn by Following

Drag Block Placement Check and Placement

안녕하세요 복사가 되는 버그가 발생했습니다ㅠㅠ

Written on

·

473

2

도형을 배치시키면 위에 복사가 되서 2개씩 올라가지는 버그가 발생했습니다ㅠㅠ어디 부분에서 발생하는지 모르겠습니다..

 

동영상이 안올라가서 n드라이브에 올린걸 첨부하겠습니다!

 

http://naver.me/FkdG4Vew

 

 

unityC#

Answer 6

0

gangnam님의 프로필 이미지
gangnam
Questioner

안녕하세요

 

StageController.CS에서 IsGameOver()메소드가 제대로 작동하지않는거 같아서요ㅠㅠ

image

 

image

게임 재생시 더이상 놓을곳이없으면 디버그 찍었던 게임오버가 작동해야하는데 작동하지를 않습니다..ㅠㅠ

unitynote님의 프로필 이미지
unitynote
Instructor

게임오버와 관련된 부분들을 차근히 살펴보시기 바랍니다.

StageController.IsGameOver()에서

blockArrangeSystem.IsPossibleArrangement()를 호출하고 있기 때문에

거기서 문제가 발생했을 수도 있습니다.

IsPossibleArrangement()에는 수식도 많기 때문에 +, -나 수치 등을 확인해보시고,

IsGameOver()에서 각 구역마다 Log()를 찍어 확인해보거나 하는 방법으로

살펴보시면 원인을 발견할 수 있습니다.

0

unitynote님의 프로필 이미지
unitynote
Instructor

답글을 달아드렸다고 생각했는데 안달려있었네요

첫 번째 사진과 같이 현재 Null 에러가 발생하는 BlockArrangeSystem.cs의

backgroundBlocks 배열을 확인해보니 비어있습니다.

image

찾아보니 BackgroundBlockSpawner.cs에 코드 한줄이 빠져있어

화면에 보이도록 생성은 하지만 반환되는 값이 없어 null이 떴습니다.image

두 번째 사진과 같이 BackgroundBlockSpawner.cs에 코드를 추가하면 정상 실행됩니다. [PPT 110 참고]

gangnam님의 프로필 이미지
gangnam
Questioner

오 해결되었습니다!! 정말 감사합니다ㅎㅎ

0

gangnam님의 프로필 이미지
gangnam
Questioner

답변이 계속 없으셔서 다시 답변 남깁니다..

혹시 확인이 되시나요..?

0

gangnam님의 프로필 이미지
gangnam
Questioner

고박사님이 말씀하신부분이랑 영상 처음부터 다시 따라가보면서 해봐두 에러는 계속 뜨네요ㅠㅠ

패키지 첨부 해드리겠습니다..한번 봐주실수있을가요..?

 

http://naver.me/5Lo4QPBd

네이버클라우드로 올렸습니다!

0

gangnam님의 프로필 이미지
gangnam
Questioner

안녕하세요 고박사님 또다른 버그가 발생해서 콘솔창에 뜨는데 이것은 왜 발생하는 버그일가요?ㅠㅠ

콘솔창과 스크립트 첨부 하겠습니다!1.png

 

2.png3.png

unitynote님의 프로필 이미지
unitynote
Instructor

지금 발생한 NullReference 에러는 클래스 변수가 비어있을 때 뜨는 에러입니다.

68줄이니 직전 줄인 67줄의 backgroundBlocks[]가 비어있다는 얘기입니다.

backgroundBlocks은 Setup() 메소드에서 설정해주고 있고,

 

Setup() 메소드는 StageController 스크립트의 Awake() 메소드에서 설정하고 있으니

이 코드들을 순차적으로 살펴보시면 될거에요

backgroundBlocks = new BackgroundBlock[blockCount.x * blockCount.y];

backgroundBlocks = foregroundBlockSpawner.SpawnBlocks(blockCount, blockHalf);

blockArrageSystem.Setup(blockCount, blockHalf, backgroundBlocks, this);

0

unitynote님의 프로필 이미지
unitynote
Instructor

어느 부분에서 코드가 2번 실행되어 2개가 배치되는지 확인하려면

관련된 코드를 모두 살펴보는 방법밖에 없을 것 같습니다.

 

드래그 블록의 클릭을 종료했을 때 DragBlock.OnMouseUp()이 실행되는데

여기서 Try를 2번 하는 것인지?

아니면 애초에 드래그 블록이 2개씩 중첩해서 생성되는건지

하나씩 살펴보는 방법 밖에 없을 것 같습니다

 

제가 공유해드린 스크립트와 내용을 비교하면 잘못 작성된 내용을

더 쉽게 찾을 수는 있을 것 같습니다.

gangnam's profile image
gangnam

asked

Ask a question