인프런 커뮤니티 질문&답변

호기심 많은 코끼리님의 프로필 이미지
호기심 많은 코끼리

작성한 질문수

유니티 현재 선택된 gameobject 관련 로직 관련 질문드립니다.

작성

·

323

0

안녕하세요 유니티 궁금한 점이 있습니다.

정해진 타입의 선택된 컴포넌트에서만 실행되게 하는 로직인데 NullRefException이 발생하는데 이유가 궁금합니다.

 void ProgressBarExe()
    {
        // Debug.Log($"Select idx :{selected}");
        // 재생중인 소스, 현재 활성중인 버튼에서만 동작, NullreferenceException 에러 발생하는 부분입니다.
        if (EventSystem.current.currentSelectedGameObject.transform.tag == "cellprefab" && EventSystem.current.currentSelectedGameObject.transform.GetSiblingIndex() == selected)
        {
            EventSystem.current.currentSelectedGameObject.transform.GetChild(1).GetComponent<Slider>().maxValue = Source.clip.length;
            EventSystem.current.currentSelectedGameObject.transform.GetChild(1).GetComponent<Slider>().value = Source.time;
        }   
    }

현재 선택된 곳이 버튼 프리팹이고 selected 인덱스의 AudioSource Source 가 재생중인 경우에는 다른 버튼들이 비활성화 되거나 하는 로직 구현이 궁금합니다. (현재 선택된 곳의 인덱스를 저렇게 가져오는 것 같은데 다른 빈 곳을 누르면 NullRefException 발생하는데 그 이유를 잘 모르겠네요.)

답변 1

1

해당 소스만 봐서는 판단하기가 쉽지 않은 것 같습니다.

개인적으로 Unity가 실행 중일 때 Debugging 할 수 있는 방법이 있는데 이를 통해 한번 로그를 찍어보시는 것을 추천드립니다.

https://docs.unity3d.com/kr/2020.3/Manual/ManagedCodeDebugging.html

위 링크에 들어가보셔서 내용 보시고 따라하시면 금방 할 수 있을 겁니다!

아 해결했습니다. 버튼 프리팹을 오브젝트 리스트에 넣어서 인덱스 넣었더니 되네요..

다행입니다 ㅎㅎ

호기심 많은 코끼리님의 프로필 이미지
호기심 많은 코끼리

작성한 질문수

질문하기