표시 및 숨기기
Coddy Unity 여정의 Unity 스크립팅 기초 섹션에 포함된 레슨. 85개 중 48번째.
SetActive(false)는 GameObject 전체를 비활성화합니다. 화면에 그려지지 않고, 더 이상 충돌하지 않으며, 그 안의 스크립트는 Update() 호출을 받지 않고, 자식 오브젝트도 함께 비활성화됩니다. SetActive(true)를 사용하면 모두 다시 활성화되고, activeSelf는 활성화 상태인지 알려 줍니다. 버튼에 연결된 이 스크립트는 마우스를 클릭하면 door 필드에 지정된 문을 숨깁니다.
public GameObject door;
void Update()
{
if (Input.GetMouseButtonDown(0))
{
door.SetActive(false);
}
}gameObject.SetActive(false)를 사용해 자기 오브젝트를 숨기는 스크립트는 오브젝트를 다시 표시할 수 없습니다. Update()가 더 이상 실행되지 않기 때문입니다. 따라서 스위치는 자신이 표시하거나 숨길 오브젝트를 참조하는, 다른 오브젝트에 있어야 합니다.
enabled는 컴포넌트 하나만 비활성화하고 오브젝트의 나머지 부분은 그대로 둡니다. GetComponent<Renderer>().enabled = false를 사용하면 오브젝트가 보이지 않게 되지만, 콜라이더는 여전히 물체를 막습니다. 즉, 보이지 않는 벽이 됩니다. enabled = false인 스크립트는 더 이상 Update() 호출을 받지 않지만, 오브젝트는 씬에 그대로 남아 화면에 계속 그려지고 충돌도 계속 일으키며, 다른 컴포넌트도 계속 작동합니다.
챌린지
중급스페이스 키를 눌러 다리를 숨겼다가 다시 나타나게 하세요.
Update()에서Input.GetKeyDown(KeyCode.Space)일 때bridge.SetActive(...)를 호출해 콜라이더를 포함한 다리 전체를 전환하세요.- 현재 상태의 반대 값을 전달하세요:
bridge.SetActive(!bridge.activeSelf);.
‘플레이’를 누르고 스페이스 키를 몇 번 눌러 보세요. 다리가 사라졌다가 다시 나타납니다. 그런 다음 ‘확인’을 누르세요.
직접 해보기
using UnityEngine;
public class BridgeSwitch : MonoBehaviour
{
public GameObject bridge;
void Update()
{
// Space를 누르면 다리가 숨겨지고, 다시 누르면 나타납니다
}
}
Unity 스크립팅 기초의 모든 레슨
직접 연습해 보세요: Unity 플레이그라운드