FluidTrack / MOA_garden

Fluid Track Unity Application
MIT License
0 stars 0 forks source link

[BUG] 물 모두주기 클릭시 버그 발생 #118

Closed mminkyongkim closed 3 years ago

mminkyongkim commented 3 years ago

하루보기에서 물, 오줌, 똥 클릭후 물 모두주기 버튼을 누르니 버그가 발생했다는 화면이 떴습니다. 그리고 그 후 버그 정보 전송 후, 화면이 얼고 화면이 움직여지지 않았습니다. bug.pdf

KimYC1223 commented 3 years ago

중간 정리

@mminkyongkim 와 통화 후 상황 전달

가끔 꽃 키우기 화면의 아이콘을 모두 사용했지만 "모두주기"버튼이 비활성화가 안되는경우가 발생함

모두주기에서 Animation의 play time을 계산 하는 수식에서 아이콘 개수로 나누는 과정이 있기 때문에,

0으로 나누는 값이 NaN으로 처리되어 발생하는 문제인듯

KimYC1223 commented 3 years ago

문제 해결

작업했던 내용때문에 발생한 버그입니다.

94 [BUG] 물 모두주기 오류 본문 내용

따라서, private bool wateringAllButtonClicked라는 변수를 추가하고,

모두주기 버튼을 누를 때엔 값을 true로 바꿔주는 기능을 추가했습니다.

그리고 문제가 되었던 IEnumerator ReDrawSpot()에서는

wateringAllButtonClicked값이 false일 때에만

WateringAllButtoninteractable값을 변경하도록 하였습니다.

IEnumerator ReDrawSpot() {
    // 중략
    if(!wateringAllButtonClicked)
        WateringAllButton.interactable = waterIconCount > 0;
    // 후략
}

이 과정에서 물 모두주기가 아니라 일반적으로 물을 줄 때에는 wateringAllButtonClickedfalse 이므로

해당 코드가 동작하지 않았습니다.

...라는 것은 제 의도대로 동작한 것이었습니다만,

적어도 일반적 물 주기 방법으로 물을 주고 난 다음엔

화면에 남아있는 물 아이콘 개수가 0인지는 확인을 했어야 했던 것입니다.

따라서 다음과 같이 수정했습니다.

IEnumerator ReDrawSpot() {
    if(!wateringAllButtonClicked)
        WateringAllButton.interactable = waterIconCount > 0;
    if(waterIconCount == 0)
        WateringAllButton.interactable = false;
}

이제는 잘 동작합니다. 감사합니다.