본문 바로가기
Programming/Unity 기초탈출기

[Unity] 유니티 기초 탈출기 - Part.03 - 스크립트 편 ( GameObject )

by 타임박스 2022. 5. 12.
반응형


✔ Unity 기초탈출기 - 게임오브젝트 활성화/비활성화



안녕하세요.

이번에는 GameObject 클래스와 활용방법에 대해서 알아보는 시간입니다.

이전 포스트에서 Getcomponent를 해서 Transform을 사용하는 간단한 예를 해보았었습니다.

다시 한번 리마인드하는 마음으로!!

GameObject를 생성했을때 Transform의 컴포넌트는 무조건 자동으로 생긴다고 했죠?

(삭제도 안되구요)

그리고 Transform 밑에 보이는 속성 (Position, Rotation, Scale)을 가져와서 값을 찍어보기도 했습니다.

GameObject와 Transform은 셋트라고 보시면됩니다. 서로 뗄래야뗄수없는 관계.

왜냐!! GameObject에는 Transform이 항상 포함되어 있으니까!!! (삭제도 안되니까!!!)

그래서 코드에서도 서로간에 접근이 가능합니다.

//게임오브젝트에서 트랜스폼 접근
gameObject.transform.position


//트랜스폼에서 게임오브젝트 접근
transform.gameObject.name

거의 한쌍처럼 움직이면서 사용됩니다.

GameObject 클래스와 Transform 클래스에는 많은 기능들을 포함하고 있습니다.

너무 많아서 하나씩 설명드리면 지루하니까 가장 기본적이고 쉬운것들 위주로 하겠습니다.

 

● 오브젝트 활성화/비활성화 하기

- 이 기능은 오브젝트를 화면에서 껏다켰다 하는 기능입니다. (삭제가 아닙니다)

실행화면에서 토글을 켰다 껐다하면 화면에서 객체가 있었다 없었다 하잖아요

그거를 코드로 하는겁니다.

using UnityEngine;

public class MyTest : MonoBehaviour
{
    // Start is called before the first frame update
    void Start()
    {
        //꺼졋다
        gameObject.SetActive(false);

        //켜졌다
        //gameObject.SetActive(true);
    }
}

SetActive의 함수에 파라미터로 True, False를 넣어 제어할 수 있습니다.

True는 켜짐 상태로 변경, False는 비활성화 상태로 화면에 안보입니다.

 

Q1: 근데 저기 소문자 gameObject는 변수 선언도 안했는데 어떻게 오류가 안날까??

gameObject는 MonoBehaviour에 포함되어 있습니다. 

그래서 현재 스크립트(컴포넌트)가 등록되어 있는 객체를 나타냅니다.

 

Q2 : 그럼 현재 스크립트 등록된 객체 말고 다른 객체를 어떻게 가져올까??

코드부분을 수정해보겠습니다.

using UnityEngine;

public class MyTest : MonoBehaviour
{
    public GameObject target;
    // Start is called before the first frame update
    void Start()
    {
        //꺼졋다
        target.SetActive(false);

        //켜졌다
        //target.SetActive(true);
    }
}

변수 GameObject target을 추가하고 target을 SetActive하여 제어하였습니다.

지금은 변수 선언만하고 초기화를 하지 않아서 Null인 상태겠죠?

스크립트를 저장하고 유니티에서 컴파일이 끝나고 스크립트가 등록된 객체를 클릭합니다.

위 그림처럼 추가된 것을 볼 수 있습니다.

그럼 제어할 대상의 객체를 끌어다가 저기에 넣습니다. 

끌어다가 놓으니 이렇게 바뀌었죠?

이제 실행해서 플레이 해봅시다!

제어가 잘 되나요??? ㅎㅎ

 

감사합니다.

반응형

댓글