[Unity][개발#4]블록코딩, Canvas Group, 캔버스그룹 온오프, 코루틴문제

2021. 5. 12. 11:28PROJECT/VR 소프트웨어 코딩교육 플랫폼

   public void OnButtonClick()
    {
        gameObjectOpen.SetActive(true);
        gameObjectClose.SetActive(false);
    }

지금까지 항상 둘 이상의 캔버스를 사용할때는 버튼을 누를때 하나는 true를 반환하고 하나는 false를 반환했다.

 

그런데 비활성화된 캔버스의 하위 오브젝트를 찾을때 여러 어려움도 존재하고 코루틴을 사용하다보면 비활성화된 오브젝트의 코루틴을 실행되지 않는다는 오류를 보았다.

 

이를 해결하기 위해 캔버스가 비활성화 되지는 않지만 눈에 비활성화처럼 눈에 보이지 않고, 클릭이 불가능하게 설정하는 방법을 Canvas Group을 통해 해결하였다.

 

 public void OnButtonClick()
    {
        OpenCanvasGroup = gameObjectOpen.GetComponent<CanvasGroup>();
        CloseCanvasGroup = gameObjectClose.GetComponent<CanvasGroup>();
        OpenCanvasGroup.alpha = 1;
        OpenCanvasGroup.blocksRaycasts = true;
        CloseCanvasGroup.alpha = 0;
        CloseCanvasGroup.blocksRaycasts = false;
    }

다음과 같이 설정하면 두개의 CanVas를 온오프 효과를 줄 수 있다.