2014-02-26 4 views
4

이 쉬운 것이어야한다 :유니티/C# 찾기 개체를 얻을 구성 요소

GameObject myCube = GameObject.Find("Cubey").GetComponent<GameObject>(); 

그냥 오류 CS0309을 차기 : 유형 UnityEngine.GameObject는 매개 변수로 사용하기 위해 UnityEngine.Component로 전환해야 T 일반 유형 또는 메소드에서 UnityEngine.GameObject.GetComponent()

일반적으로 유니티 표시 오류는 유용하지만 이는 혼란 스럽습니다. 큐브가 GameObject가 아닌가? 모든 포인터는 감사 할 것입니다.

+0

'GameObject'가 아닙니다 - 당신은'GameComputer'에'GetComponent '의 값을 할당하려고합니다. 확실히 GameComponent 나 Component가 필요합니다. 단일성) – Charleh

답변

3

가 거기 쉬운 실수, 그게 전부 당신의 결과를 사용할 수 있습니다 이것, 염두에두고 거기에 항상 내가 틀렸 거나이 문제를 오해했다 :)

GameObject 유형입니다. 따라서 GameObject 유형은 GameObject 또는 GameObject에서 상속 한 것과 만 연결할 수 있습니다.

그 의미는 다음과 같습니다. GameObject 변수는 GameObject 및 GameObject의 하위 클래스만을 가리킬 수 있습니다. 아래의 코드는 실제로 GameObject 유형의 Component를 가리키고 있습니다.

GameObject.Find("Cubey").GetComponent<GameObject>(); 

이것은 Cubey를 찾고 Cubey에 연결된 GameObject를 가리킨다는 것을 의미합니다.

당신이 찾고있는 구성 요소가 GameObject 유형이 아니라고 이미 위에서 말한 것처럼 나는 짐작할 수 있습니다.

당신은 당신이 할 수있는 Cubey 가리 키도록 변수 게임 오브젝트 myCube를 원하는 경우 사용자가 동일한 문제를 가진이 게시물에 오는 데 도움이

GameObject myCube; 

void Start(){ 
    // Lets say you have a script attached called Cubey.cs 
    // This is a slow approach 
    myCube = GameObject.FindObjectOfType<Cubey>(); 
} 

// A faster approach is to do 
// You need to then attach cubey through the inspector 
public GameObject myCube; 

희망을.

9

GameObject은 구성 요소가 아닙니다. GameObject에는 Component 묶음이 붙어 있습니다.

당신은 GetComponent 전화를 빼앗아 그냥 실제로 .. 너무 많이 :)

내가 좋아하는 그것을 설명 할 수 Find("Cubey")

GameObject myCube = GameObject.Find("Cubey");