2016-12-23 2 views
0

Unity3D & C#에서 GUI 작업 목록에 내 복제본을 보관합니다.Unity에서 복제 객체의 자식을 활성화하는 방법은 무엇입니까?

button = Instantiate(BlackBox, Vector2.zero, Quaternion.identity) as GameObject; 
buttons.Add(button); 

어떻게 this situation에 ArrowRight을 사용하려면?

활성화하려면 ArrowRight에 연락하고 싶습니다. 나는 방법의 이러한 종류의 변화 시도 :

buttons[index].gameObject.transform.GetChild(1).gameObject.SetActive(true); 

을했지만 작동하지 않습니다. Objects' components.

+0

이미지를 보면, 난 당신이 GetChild (0),하지만 그건 사소한 문제입니다 전화를 걸 의심 . 또 다른 의심 : BlackBox 객체 자체가 활성화되어 있습니까? 부모가 아니라면 아이를 활성화시킬 수 없기 때문입니다. –

+0

예,이 코드는 ArrowLeft도 사용하지 않습니다. –

+0

당신이 맞습니다. 답장하는 동안 다른 문제로 내 의견을 편집했습니다 :) –

답변

0

가 해결 :

대신 :

buttons[index].gameObject.transform.GetChild(1).gameObject.SetActive(true); 

사용

:

buttons[index].transform.GetChild(1).gameObject.SetActive(true); 
+0

당신은 그 두 가지가 정확히 똑같은 것이라는 것을 알고 있습니까? 하나는 게임 객체의 변형을 얻는 추가 단계를 거쳐야합니다. – Alox

+0

모르겠다. 그 중 하나는 작동하지 않으며, 그 중 하나는 작동하지 않는다. 저는 Unity의 초보자입니다. 왜 그런지 모르겠습니다. –

0

방금이 코드를 사용하여 문제를 해결했습니다. 어쩌면 최선의 해결책은 아니지만 올바르게 질문을 이해하면 제대로 작동 할 것입니다.

using UnityEngine; 

public class blackBox : MonoBehaviour { 
    public bool toggleRight; 

    // Update is called once per frame 
    void Update() { 
     if(toggleRight) 
     { 
      foreach(Transform child in transform) 
      { 
       if(child.name.Equals("ArrowRight")) 
       { 
        child.gameObject.SetActive(!child.gameObject.activeSelf); 
       } 
      } 
      toggleRight = false; 
     } 
    } 
} 

이것은 단지 데모이며 필요에 맞게 꾸밀 수 있습니다.

블랙 박스에 게임 개체를 놓고 foreach를 사용하여 해당 이름으로 게임 개체를 활성화 또는 비활성화하십시오.

+0

답장을 보내 주셔서 감사하지만 작동하지 않습니다. 난 당신의 코드를이 방법을 변경 'foreach는이 { (버튼 [인덱스] .transform에 아이를 변환)하는 경우 (child.name.Equals ("ArrowRight")) { child.gameObject.SetActive (TRUE); } } ' –

+0

글쎄, 네가 게임 객체를 점검하고 싶지 않다면 어떻게 할 수있을 것인가. 내가 말했듯이 "당신의 요구에 맞춰 스위트를 찢어 라." 그래도 결국 네가 원하는 걸 했니? – Alox

+0

변경 사항이 적용되지 않습니다. 노력하면서 코드를 수정하는 방법을 입력했습니다. 하지만 그 대답은 다음과 같습니다. buttons [index] .transform.GetChild (1) .gameObject.SetActive (true); –

관련 문제