basic에서 player의 gameObject에 대해서 알아봤습니다.
<복습>
1) 비활성화 | gameObject.SetActive(false); |
2) 활성화 | gameObject.SetActive(true); |
3) 활성화 상태보기 | gameObject.activeSelf; |
4) 오브젝트 이름 알아내기 | gameObject.name; |
5) 태그 알아내기 | gameObject.tag; |
6) Layer 알아내기 |
gameObject.layer; |
LayerMask.LayerToName(gameObject.layer); |
이제부터 player에서 GameObject를 사용하기 위해서 선언하고, 초기화 해주어야한다.
1) Game Object 선언, 초기화
----------------------
public GameObject (오브젝트이름)Object;
---------------------
변수처럼 선언해야 사용할 수 있다.
gameObject는 자기 자신만 사용하기로 약속이 되있다.(예약어)
그래서 다른 게임 오브젝트를 사용하기 위해서 gameObject를 아닌 다른 이름을 사용해야한다.
아래처럼 게임오브젝트를 선언해주자.
스크립트를 위와 같이 하고, 저장하면 아래와 같이 Inspector>Script에서 Enemy Object 부분이 생성된다.
None (Game Object)부분에 Enemy 게임 오브젝트를 드래그 하면 초기화가 된것이다.
* 참고로 void Start() 구문에서 초기화하면 에러생긴다. 그러니 선언하면 안된다!@
기본적으로 gameObject른 본인 오브젝트로 잡혀있으니 선언하면 오류가 뜨고,
드래그해서 초기화 해주므로enemyObject로 선언을 해줄 필요가 없다.
void Start()
{
gameObject=GetComponent<GameObject>();
}
이제부터 PlayerMove 스크립트에서 enemyObject라고 칭하는 것은 enemy의 게임오브젝트로 사용할 수 있다.
2) enemy Object 비활성화/ 활성화/ 상태 보기
gameObject를 활성화 시키기위해서는 아래와 같이 하면된다.
gameObject.SetActive(false);
enemyObject를 활성화 시키기위해서 enemyObject를 앞에 붙이면된다.
-----------------------------------------------
enemyObject.gameObject.SetActive(false);
-----------------------------------------------
실행하면 화면에서 에너미 오브젝트가 사라지는 것을 볼 수 있다.
여기에서 gameObject는 생략이 가능해서 아래와 같이 스크립팅해도 동일하다.
-----------------------------------------------
enemyObject.SetActive(false);
-----------------------------------------------
자 이제 배운 것을 응용해서 활성화, 상태보기를 해보자.
활성화 >>
gameObject.SetActive(true);
활성화 상태보기 >>
gameObject.activeSelf;
***실행해보기>>
enemyObject.SetActive(true);
enemyObject.activeSelf;
3) enemy Object 오브젝트 이름 / 태그 / 레이어 찍어보기
- 오브젝트 이름알기 : gameObject.name;
- 태그 알아내기 : gameObject.tag;
- Layer 알아내기 : gameObject.layer;
- Layer이름 알아내기 : LayerMask.LayerToName(gameObject.layer);
위에서 배운것을 응용해서 앞에 enemyObject만 붙여서 실행해보자.
- 에너미 오브젝트 이름알기 : enemyObject.gameObject.name;
- 태그 알아내기 : enemyObject.gameObject.tag;
- Layer 알아내기 : enemyObject.gameObject.layer;
- Layer이름 알아내기 : LayerMask.LayerToName(enemyObject.gameObject.layer);
gameObject생략해보자.
- 에너미 오브젝트 이름알기 : enemyObject.name;
- 태그 알아내기 : enemyObject.tag;
- Layer 알아내기 : enemyObject.layer;
- Layer이름 알아내기 : LayerMask.LayerToName(enemyObject.layer);
Debug.Log(내용);
으로 각각 콘솔창에 찍어보자!
Debug.Log(enemyObject.name);
Debug.Log(enemyObject.tag);
Debug.Log(enemyObject.layer);
Debug.Log(LayerMask.LayerToName(enemyObject.layer));
다음장에서는 스프라이트 렌더러에대해서 살펴보자!
4) 레이어 변경하기
다른 오브젝트의 레이어의 이름으로 변경하기
------------------
다른오브젝트이름.layer = LayerMask.NameToLayer("레이어이름");
------------------
예시
==============
publicpublic GameObject enemyObject;
enemyObject.layer = LayerMask.NameToLayer("Water");
==============
Unity Beginner ch. 06] 게임 오브젝트 마우스 팔로잉 (0) | 2020.05.05 |
---|---|
Unity Beginner ch. 05] 다른 오브젝트 다른 클래스의 변수/함수 접근 (0) | 2020.05.05 |
Unity Beginner ch. 04] 다른 오브젝트 Sprite Renderer Scripting (0) | 2020.05.04 |
Unity Beginner ch. 03] 다른 오브젝트 Transform 구성요소 제어하기 (0) | 2020.05.04 |
Unity Beginner ch. 01] 다른 오브젝트 스크립트로 제어 준비하기 (0) | 2020.05.04 |