2024/08 8

캔버스 내 특정 UI만 위로 오게하고 싶다면...? (Canvas - Override Sorting)

위의 사진에서 PAUSE라는 글씨위에 X와 체크 표시가 위에 올라가서 보기 좋지 않은 모습이다. PAUSE라는 글씨는 여러 복잡한 이유로 캔버스를 이동시킬 수는 없는 상황이였고 이럴 때 쓸 수 있는 것이 Canvas의 Override Sorting이다. 가장 위에 올라와야하는 저 글씨 PauseTxt 에 찾아가 Canvas 컴포넌트를 달아준다. 그냥 달아주기만 하면 안되고 Override Sorting을 체크하고 Order in Layer를 높게 설정해주자 여기선 20정도로 설정해주었다. 다른 UI요소들은 Order in Layer가 0~10 사이였기에 가장 높게 준 것이다.  이렇게하면 의도대로 PAUSE 이팩트가 맨 위로 올라가게 된다. Override를 해서 사용하기 때문에 캔버스를 아예 하나 더 ..

유니티 2024.08.23

이벤트 사용에 있어 주의 점

이벤트는 매우 편리하다 이벤트 발생 시에 구독되어있는 함수들을 한 번에 수행할 수 있기 때문이다. 하지만 동시에 주의해야할 점들이 있다. 먼저 Monobehaviour를 상속받아 오브젝트에 부착될 스크립트일 경우  구독해제에 대해 신경을 써줘야한다. 구독해제를 안한 것이 어떨 때 문제가 되냐면 오브젝트가 구독해제를 안한 상태로 파괴가 됐는데 이벤트 호출을 하면 Null 오류가 뜨게 된다.  또 하나 알아둬야할 것은 람다식의 경우 이벤트 구독 해제가 안된다.  이벤트로 람다식을 구독시키는 것은 매우 편리한 것을 알지만 구독해제가 안되니 되도록 사용하지 않거나 굳이 써야한다면 Monobehaviour를 상속받지 않는 클래스에서 사용하는 것이 좋아보인다. 이번 프로젝트에선 전역으로 사용할 수 있는 이벤트 매니..

유니티 2024.08.19

유니티 - 2 event systems 에러

보통 씬을 LoadScene 했을 때 additive로 불러왔을 때 맞이할 수 있는 에러이다. 말그대로 event system이 2개가 있다는 의미로  씬1과 씬2(additive할 씬)이 있다면  캔버스를 만들때 자동으로 생기는 event system이 씬1에도additive를 할 씬2에도 존재한다면 2개의 event system이 존재하게 된다. 고로 위와 같이 2 event systems 에러가 나는 것이다. 둘 중 한쪽의 event system을 제거해주면 된다.

유니티 2024.08.19

토글 그룹이 이상하게 작동해요!?

토글 그룹의 경우 보통 여러 옵션중 하나만 선택 가능하도록 하고자 많이 사용되는데 내가 마주한 문제 상황은 다음과 같다.  그래픽 옵션서 상 중 하 의 토글 중 하나만 선택가능한데 확인 버튼을 누르면 선택한 그래픽 옵션이 적용되고 취소 버튼을 누르면 어떤 토글을 골랐던 선택 이전, 즉 기존의 토글이 유지되도록 하고자하는데 문제는 종종 취소 버튼을 눌러도 기존의 토글이 유지가 안되는 문제였다. 예를 들어 기존 옵션이 High 일 때 Medium을 체크하고 취소를 눌러도 High가 유지되어야하는데 다시 설정창을 키면 Medium으로 나오는 것이다. 이 문제에 있어 핵심은 "오브젝트가 비활성화 되어있으면 토글 그룹은 정상적으로 작동하지 않는다" 는 사실이다. 해당 설정 화면은 유저가 설정 버튼을 눌러야만 나오..

유니티 2024.08.16

LoadSceneAsync 사용 시 유의점 (Awake와 Start 차이)

Awake와 Start는 Awake가 더 빨리 수행되는 생명주기라는 것은 잘 아는 사실일 것이다. 허나 먼저 수행된다는 것으로 큰 차이가 발생할 수도 있는 부분이 있는데 바로 다뤄보고자 하는 LoadSceneAsync 기능을 사용할 때이다. LoadSceneAsync 기능은 yield return이나 await를 사용하면 다음씬이 로드될 때까지 기다려줄 수 있는 기능이다. 그렇기 때문에 씬 전환되면서 초기화되는 과정이 노출되는 것을 방지를 해줄 수 있다. 그런데 왜 Awake와 Start를 유의해야하냐면 LoadSceneAsync 기능은 Awake까지만 대기를 해준다. 즉 Start까지는 기다려주지 않는 것이다. 이점을 유의하면서 코딩을 해야한다. 아래는 내가 실제로 겪은 문제 상황이다. 먼저 씬을 불러..

유니티 2024.08.14