UI팀에서 만든 블루프린트 이벤트 중에서 SetVisibility 함수 노드를 실행핀에 연결해 두고 Target 핀에다가는 아무것도 어떤 위젯도 연결해두지 않은 "동작하지 않는 SetVisibility 함수 노드"가 하나 있었다.
해당 이벤트는 특정 연출효과 애니메이션을 실행하는 기능을 하는 이벤트였다. 하지만 SetVisibility에는 어떤 위젯도 연결되어 있지 않았기 때문에, 연출효과 애니메이션을 실행하려고 이벤트를 호출했을 때 위젯이 Collapsed로 꺼져있는 경우 애니메이션은 실행되지만 보이지 않는 문제가 발생할 수 있었다. 분명 문제가 있는 상황이다. 그래서 UI 쪽 담당자와 이야기해서 해당 이벤트를 보여주는 위젯을 SetVisibility 함수와 연결시켰다.
그랬더니 이슈가 발생했다. 이유는 해당 이벤트는 "애니메이션을 재생하기 위해서 호출"되는 것이 아니라, "만약 해당 위젯이 열려있는 경우에만 애니메이션을 보여주겠다."라는 의미로 사용하고 있었다. 그래서 그동안 위젯이 꺼져 있었던 곳에서는 이벤트를 호출하더라도 애니메이션이 재생이 되지 않는 것이 기대한 모습이었는데, 나의 수정으로 인해서 꺼져있던 곳에서도 위젯을 켜고 애니메이션이 보이게 된 것이다.
물론 처음 블루프린트 코드에 위젯의 Visibility를 검사하는 의미가 있었더라면 (가령 if (Canvas->IsVisiblie()) 과 같은 문맥) "이거는 위젯이 켜져 있을 때만 재생하는 애니메이션이네"라고 직관적으로 이해할 수 있었을 텐데, 그런 코드는 아니었다. 그.럼.에.도. 이것을 확인하지 않고 고친 것은 나의 실수였다. 내가 실수한 부분은 SetVisibility 노드가 덩그러니 있을 때 이상하네? 잘못됐으니 고쳐야지!라고 생각한 부분 이다. 이상하네? 왜 그랬을까? 라며 이유를 찾아봤으면 발생하지 않았을 이슈였다.
이상하게 보이는 코드일지라도 반드시 그 의미는 있다. 심지어 사용되고 있지 않는 코드일지라도 무언가를 암시하기 위해서 남겨놓은 것일 수도 있다. 그러니 꼭 이유를 찾아보는 습관을 가지자. 그리고 쉽게 단정 짓지 말자.