• 카테고리

    질문 & 답변
  • 세부 분야

    게임 프로그래밍

  • 해결 여부

    해결됨

gameObject.setActive(false);

22.04.20 19:56 작성 조회수 350

0

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

답변 1

답변을 작성해보세요.

1

진성일님의 프로필

진성일

2022.05.16

Start 함수 안에서

gameObject.setActive(false);

gameObject.AddComponent<AddScript>();

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

 

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

간단히 예를들자면

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

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

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

최성호님의 프로필

최성호

질문자

2022.05.17

To 진성일

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

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

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

진성일님의 프로필

진성일

2022.05.24

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