2017-05-12 2 views
0

Unity를 처음 사용합니다. 나는 보이지 않는 GameObject를 가지고 있는데, 스크립트로 만 A라고 부르며, 프리 패브 B를 여러 번 인스턴스화합니다. 나는 B의 생성 된 클론에 A를 다시 참조 할 필요가있다. 나는 이것을 작동시키기 위해서, A가 조립식 그 자체 이어야만한다는 것을 배웠다. (내가 틀렸다면 나에게 맞춰라.) 스폰 된 B 객체는 마우스 클릭에 반응하고 메서드의 문제입니다. A의 호출 된 메서드 내에서 A 자체의 변수에는 예기치 않은 값이 있습니다. 예를 들어 Start()에서 0으로 초기화되고 사용되지 않은 특정 변수는 12. 모든 스폰 된 객체 B가 "자체"A에 대한 참조를 가지고 있고 A의 변수가 임의의 값을 갖는 것처럼 보입니다. 내가 뭘 놓치고 있니? 이 작업을하기 위해서는Unity, 다른 프리 프레임에서 프리 팹을 만듭니다.

+0

'게임 오브젝트'에 첨부 된 스크립트를 제공 할 수 있습니까? – Hristo

답변

3

는, A는 조립식 자체 (내가 틀렸다면 정정 해줘)

난 당신이 조립식 B에 스크립트에서 해당 필드를 설정하는 것으로 가정이어야한다 프리 플럽A인데 원하는 것은 아닙니다. A은 사전에 일 필요는 없습니다..

프리 패브는 일련의 GameObject로, 편집자 및 게임 내/편집자 스크립트를 통해 GameObject를 쉽게 관리 할 수 ​​있도록 특정 공유 기본값을 포함합니다. 프리 팹은 많은 수의 유사한 객체를 다룰 때 사용됩니다. 각 프리 패브 인스턴스는 몇 가지 수정 된 속성을 제외하고는 다른 인스턴스와 유사합니다. 따라서 한 번 클릭으로 프리 패브 인스턴스를 대규모로 인스턴스화 할 수 있습니다. 예를 들어 총포 발사 물체를 프리 패브로 저장하면 한번의 클릭으로 모든 총 발사체의 기본 크기를 수정할 수 있으며 인스턴스 단위로 특성 사용자 정의가 가능합니다. 프리 팹을 템플릿으로 생각하면 GameObject를 인스턴스화하는 데 사용할 수 있습니다.

는 B의 인스턴스 양산에 간단히 스크립트에 필요한 필드를 설정 (이하, ScriptA라고 함) A에 스크립트를 통해 조립식 B 인스턴스 산란 때 gameObject로 (이하 ScriptB라고 함)

다음과 같이 ScriptA의 (또는 일부 다른) 필드를 입력하십시오.

// ScriptA's method which spawns instances of prefab B 
GameObject bInstance = Instantiate(prefabB); 
ScriptB scriptOnBInstance = bInstance.GetComponent<ScriptB>(); 

scriptOnBInstance.referenceToAGameObject = this.gameObject; 
+0

감사합니다. 정확히 내가 필요한 것입니다. 작동합니다! –

+0

처음에는 GameObject A가 프리 패브가 아니 었습니다. 프리폼 B의 클론에 A에 대한 참조를 제공하는 올바른 방법이라고 가정하고 편집자로부터 프리 프레임 B에 대한 참조를 (드래그 앤 드랍하여) 편집자에게 줄 것을 시도했기 때문에 프리 패브로 변환했습니다. 그러나이 방법으로 prefab B를 편집하고 적용을 클릭하면 A에 대한 참조가 손실 된 것을 알았으므로 이것을 피하기 위해 A를 프리 패브로 변환했습니다. 이제는 이것이 완전히 의미가 없으므로 GameObject에 프로그래밍 방식으로 다른 GameObject에 대한 참조를 제공 할 수 있음을 이해합니다. –

+0

@RaffaeleTasso 답이 문제를 해결 한 경우이 문제를 답변으로 표시하고 동의 문제를 해결 한 다른 사람들이 솔루션을 쉽게 찾을 수 있도록 도와주십시오. – EvilTak

관련 문제