2014-12-19 6 views
0

내가 이름을 가진 조립식 정의 "항목"이고 그런 자료 에 포함, 내가 "항목"에 의해 GUI 조립식 (Unity3D)Unity3D에서 다른 조립식 항목을 식별하는 방법은 무엇입니까?

Object prefab_item = Resources.Load("Item"); 
    GameObject g = Instantiate(prefab_item) as GameObject; 
    g.transform.parent = this.transform; 
    g.transform.position = pos; 
    Sprite sprite = Resources.Load("Images/item_" + item, typeof(Sprite)) as Sprite; 
    g.GetComponent<SpriteRenderer>().sprite = sprite; 

내가 다른 항목의 목록을로드 할 것인지로드 조립식 , 다른 항목을 눌러 식별하는 방법은 무엇입니까?

감사합니다.

int i=1; 
g.name = string.Format("item {0}", i); 

그런 다음 사용을 식별 할 수 있습니다 :

답변

0

당신은 당신의 이름을 만들어 각 게임 객체를 제공 할 수 있습니다

당신이 그것을 누를 때, 당신이 할 수있는 그것을 처리 할 경우
var object = GameObject.Find("item 1"); 

:

  1. 게임 개체에 collider 구성 요소를 추가합니다.
  2. 하면 onMouseDown()
  3. 는 프로그래밍 방식으로 게임 오브젝트에 MonoBehaviour 스크립트를 첨부하는 MonoBehaviour 스크립트 기능 추가 :

    g.AddComponent ("YourOnMouseDownScript을"); 당신이 쓸 수

    Debug.Log ("item name: " + gameObject.name); 
    

    : 대신

+0

GameObject라는 이름을 얻은 다음이를 비교하는 방법은 무엇입니까? 내가 그 중 하나를 누르면? David 감사합니다! –

+1

g.name은 게임 개체의 이름을 반환하며 비교를 위해 string.Contains (...) 함수를 사용할 수 있습니다. – David

0

Debug.Log ("item name: " + gameObject.name, gameObject); 

그런 다음 메시지가 로그 창에서 클릭 할 수 있습니다. 로그 메시지를 클릭하면 개체가 선택됩니다.

+0

첫 번째 항목 1 만 표시하고 항목 2, 3, ... 9는 표시하지 않습니다. 비록 2, 3, ... 9 번 항목으로 누르십니까? 제가 조립식을 정의하고 나서이 조립식을로드하기 때문에 5 월 일 수 있습니까? –

+0

그래, 그렇다면이 아이템들은 어떻게 만들어 질 것이라고 생각해야합니까? 프리 패브가 항목 1이고 여러 번 인스턴스화하면 "항목 1"의 복제본이 많으며 "항목 2"는 복제되지 않습니다. 수동으로 개체의 이름을 바꾸면 "항목 2", "항목 3"이 될 수 있습니다 ... – piojo

+0

데이비드와 피오조에게 감사드립니다! 나는 완료했다 :) –

관련 문제