2013-07-21 2 views
1

저는 화합에 익숙하지 않고 아키텍처를 고민하는 데 어려움을 겪고 있습니다.Unity3D. 프로그래밍 방식으로 구성 요소를 구성하는 방법

내가 '구성 요소 A'라는 C# 스크립트 구성 요소가 있다고 가정 해 보겠습니다. 구성 요소 A에 '구성 요소 B'유형의 100 개의 다른 구성 요소 배열이 있어야합니다. 특정 값을 사용하여 프로그래밍 방식으로 'B 구성 요소를 작성하는 방법은 무엇입니까? 이 전화를 할 수 있어야대로 '구성 요소 B가' 'MonoBehaviour'에서 파생하는 것으로

'StartCoroutine'

내가 연합 당신은 평소처럼 OO에서 생성자를 사용하지 않는 것이 알고 있어요. 이 호출 할 수 에 필요로 '구성 요소 B가' 'MonoBehaviour'에서 파생하는 것으로

+3

[GameObject.AddComponent] (http://docs.unity3d.com/Documentation/ScriptReference/GameObject.AddComponent.html)를 사용하면 동적으로 구성 요소를 추가 할 수 있습니다. 그런 다음 반환 값을 사용하여 구성 요소 B의 속성을 설정할 수 있습니다. – Jerdak

답변

5

'StartCoroutine'

나는 통일에 당신이 일반적으로 로 생성자를 사용하지 않는 것이 알고 있어요 OO에서 할 것입니다.

사실입니다. 가능할 때 런타임에 구성 요소를 초기화하고 초기화 할 방법을 제공합니다 (초기화에 인수가 필요한 경우 그렇지 않으면 모두 초기화는 Start 또는 Awake 메서드 내에서 수행 할 수 있음).

특정 값을 사용하여 프로그래밍 방식으로 '구성 요소 B'를 구성하는 방법은 무엇입니까?

여기 가능한 방법 : 모든 구성 요소 위의 예에서 같은 게임 오브젝트에 부착됩니다

public class BComponent : MonoBehavior 
{ 
    int id; 
    public void Init(int i) 
    { 
    id = i; 
    } 
} 
} 
public class AComponent : MonoBehavior 
{ 
    private BComponent[] bs; 

    void Start() 
    { 
    bs = new BComponent[100]; 
    for (int i=0; i < 100; ++i) 
    { 
     bs[i] = gameObject.AddComponent<BComponent>().Init(i); 
    } 
    } 
} 

참고, 이것은 당신이 원하는 것을하지 수 있습니다. 결국 자세한 내용을 알려주십시오.

+0

사실 시도한 후에는 'AddComponent'를 호출 할 수 있다고 생각하지 않습니다. gameObject.AddComponent <>()를 말해야한다고 생각합니다. –

+0

예 맞아 ... 고칠 게. – Heisenbug

+0

런타임에 작동 할 수있는 RequireComponent와 같은 방식으로 AddComponents에 대한 방법이 있습니까? – GelatinFox

관련 문제