게임 객체에 스크립트 구성 요소가 있습니다 (여기서는 단순화되었습니다).이 구성 요소는 생성시 비활성화되고 testObject.setActive(false)
을 사용합니다. Unity3D - 상태가 해제 된 GameObject 스크립트가 사용되지 않음
는 게임 오브젝트 비활성 의지를 만들기 : 나는 다시 사용 가능 개체를 반환 5.되면
using UnityEngine; public TestObject : MonoBehaviour { public int testValue = 5; void Start() { testValue = 0; } public int GetTestValue() { return testValue; } }
해제하기 전에, GetTestValue의 반환은 유니티 문서는 말할 0입니다 모든 구성 요소 비활성화 ... GameObject에 첨부 한 모든 스크립트는 더 이상 Update()를 호출하지 않습니다 ...
그러나 Compone 스크립트에서 만든 MonoBehaviour가 실제로 '장애'가 아니라 오히려 파괴된다는 사실을 나에게 알립니다. Update()
이 호출이 중지 된 경우 어떻게 국가 손실을 설명합니까?
여기있는 기본 질문은 다음과 같습니다. 스크립트를 파괴하지 않고 일시적으로 스크립트를 사용하지 않도록 설정하려면 어떻게해야합니까?
당신이 말하는 것보다 더 많은 것이 있어야합니다.false로 설정하면 모든 Unity 메소드가 엔진 (Update, LateUpdate, Collision, ...)에 의해 호출되지 않지만 public 메소드는 다른 곳에서 호출되어 스크립트의 상태에 영향을 줄 수 있습니다. 예를 들어 GetTestValue가 비활성 인 경우에도 다른 스크립트에서 GetTestValue를 호출 할 수 있습니다. 설정 및 해제는 변수 내용에 영향을주지 않으며 인스턴스를 파괴하지 않습니다. 그래서 여러분은 실제로 다른 곳에서 새로운 객체를 파괴하거나 생성하고 있거나, 다른 객체를보고있는 중이거나 다른 곳에 값을 재설정 중입니다. – Everts
@ Evertts : 당신은 '더'가 있다는 것이 옳았습니다. 나는 인스턴스화 직후에 비활성화가 발생했다는 것을 명시 적으로 밝혀야 만했다. – frog