인프런 커뮤니티 질문&답변

최성호님의 프로필 이미지
최성호

작성한 질문수

유니티(Unity)로 시작하는 게임개발: Part 3. 슈팅게임 개발

게임오브젝트의 클래스

gameObject.setActive(false);

해결된 질문

작성

·

439

0

start 함수 안에서
gameObject.setActive(false); 다음에
gameObject.AddComponent<AddScript>(); 를 작성해 보았습니다.
해당 오브젝트가 비활성화 되었음에도 플레이 시 인스팩터창에 해당 스크립트가 붙은것이 확인됩니다.
그런데 AddScript 내부에 작성된 Debug.Log("AddScript");
는 실행되지 않는 것 같습니다.
 
이 동작 구조가 궁금합니다.

답변 1

1

Start 함수 안에서

gameObject.setActive(false);

gameObject.AddComponent<AddScript>();

가 실행되면 게임 오브젝트를 비활성화 한 후 AddScript라는 스크립트를 해당 오브젝트에 추가하겠단 의미이고

 

AddScript가 추가 된 후에는 이 AddScript에 있는 기능 즉 print 문을 실행 하여야 하는데 이미 비활성화 되버리고 난 후의 시점이라 print문이 실행되지 않는거 같습니다

간단히 예를들자면

1. 은행에서 돈을 인출하려고 은행원한테 계좌랑 신분증을 주고 이제 돈을 받아야 하는데

2. 은행이 문을 닫아버리는 눈뜨고 코베이는 상황이랄까요 

이렇게 된 경우에는 저 print 문이 아무 쓸모가 없어지겠네요 SetActive값이 false면은..

최성호님의 프로필 이미지
최성호
질문자

To 진성일

답변 감사힙니다. 대댓글 기능이 없는것 같아서 글 남깁니다.

gameObject.SetActive(false);라 하더라도

함수 안에서는 브레이스가 닫히기 전까지 아래문장까지 실행을 한다고 보면 될까요?

그런거 같습니다 애매하게 답변드리는 이유는 저도 이 강의에서 들은거 같아서.. ㅋㅋ

최성호님의 프로필 이미지
최성호

작성한 질문수

질문하기