유니티의 수많은 기능중 button이 있다.

 

그리고 여기서 button을 눌렀을 때 실행되는 함수를 리스너에 담아놓는것이 onClick 이다.

 

onClick의 리스너는 인스펙터로 직접 추가할 수도, 스크립트로 넣을 수도 있다.

 

 

이런식으로 하거나

 

 btn.onClick.AddListener(() => method());

이렇게 AddListener로 추가할 수 있다.

 

그리고 onClick 리스너를 비우는건 RemoveAllListeners 메서드를 이용한다.

 

btn.onClick.RemoveAllListeners();

 

 

그런데 오늘 문제가 생겼다.

 

계획으로는 인스펙터로 리스너에 추가한 다음 스크립트에서 비울려고 했는데

 

...안된다.

 

RemoveAllListeners 메서드는 분명히 실행됬는데 인스펙터는

 

리스너가 그대로 남아있다.

 

알아보니 RemoveAllListeners는 비지속적인 리스너만 지운다고 한다. 스크립트로 추가된 메서드만 지운다는 소리다.

 

그래서 인스펙터로 리스너에 추가한 경우 SetPersistentListenerState()를 사용해야 한다.

//0은 index 번호
btn.onClick.SetPersistentListenerState(0, UnityEngine.Events.UnityEventCallState.Off);

 

이 경우 삭제가 되는게 아니라 해당 리스너를 끄기에 그에 따른 방법이 필요하다.

'게임 프로그래밍 > Unity' 카테고리의 다른 글

AddListener 사용하기  (0) 2021.11.12
유니티 인스펙터 스크립트 속성  (0) 2021.11.12
터치한 위치에 UI 띄우기  (0) 2021.11.12
비쥬얼 스튜디오 유용한 단축키  (0) 2021.11.12
코루틴에 관하여  (0) 2021.11.12
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기
위와 같은 스크립트 코드를 추가하면 H2가 두 개 이상이거나 H3가 두 개 이상인 경우 첫 번째 H2 헤딩 태그 앞에 목차를 표시합니다. 만약 H2가 한 개도 없으면 목차가 표시되지 않습니다. H3 이상부터 있는 경우에는 코드를 조금 수정해야 합니다. 다음과 비슷하게 하면 잘 작동합니다.