유니티에서 게임 오브젝트를 활성화하거나 비활성화 할 때, enable과 SetActive를 주로 사용한다.

 

enable

enable로 활성/비활성화 하면 특정 컴포넌트만 활성/비활성화 된다.

gameObject.enabled = false;

 

SetActive

SetActive로 활성/비활성화 하면 해당 게임 오브젝트의 하위 오브젝트도 활성/비활성화 된다.

gameObject.SetActive(false);

 

 

아래는 리듬게임 노트의 이미지를 비활성화하는 메서드로, 스페이스바를 누르면 HideImage 메서드를 호출하여 이미지를 비활성화 하고 일정 범위를 벗어나면 노트 오브젝트를 파괴하고 싶었다.

private Image noteImage;

public void HideImage()
{
    noteImage.gameObject.SetActive(false);
}

 

그런데 SetActive를 사용했더니 이미지 뿐만 아니라 오브젝트 자체를 비활성화하여 일정 범위가 벗어나도 복제되고 있는 노트들이 파괴되지 않고 계속해서 쌓이는 문제가 있었다.

 

enable을 사용하여 게임 오브젝트 전체가 아닌 이미지만 비활성화하여 해결했다.

public void HideImage()
{
    noteImage.enabled = false;
}

 

 

+ Recent posts