본문 바로가기

Note..

Unity 3d Instantiate type

Instantiate 의 반환타입때문에 조금 헤맸다..  선언부분의 볼드체로 해둔 부분이 핵심인데, 파라미터로 넣은 original을 소스로 복사함수를 호출한다. 그러니 original과 같은 타입의 객체가 생성되어 Object타입으로 반환되는것이라고 추측할 수 있다. (팩트는 아니다)


public static Object Instantiate (Object original)

{

Object.CheckNullArgument (original, "The thing you want to instantiate is null.");

return Object.Internal_CloneSingle (original);

}


//혹은


public static Object Instantiate (Object original, Vector3 position, Quaternion rotation)

{

Object.CheckNullArgument (original, "The prefab you want to instantiate is null.");

return Object.Internal_InstantiateSingle (original, position, rotation);

}


만약,

GameObject source;

로 Instantiate를 한다면 GameObject의 복사본이 나오며,


Transform source;

로 한다면 Transform 타입으로 복사본이 나온다.



지금까지 Transform 타입의 소스만을 Instantiate에 넣어왔었고 Transform에서 Component를 가져올 수 없어 헤매고있었는데, GameObject로 생성해서 가져오도록 변경하여 해결하였다.


GameObject gmObj = Instantiate(src) as GameObject;

gmObj.GetComponent<ClassType>().memberVar;

...


이렇게 해결.

잘못된 접근인지는 모르겠지만, 일단은 의도한대로 돌아간다. 좀 더 공부해보다가 관련된 내용이 나오면 더 다듬어야겠다

'Note..' 카테고리의 다른 글

water jug problem  (0) 2013.06.18
컴파일러 구성론 - VSM  (0) 2013.05.03
[DB] Newheart Academy DB - 4주차 ppt  (0) 2013.02.28
[DB] Newheart Academy DB - 3주차 ppt  (0) 2013.02.16
[DB] Newheart Academy DB - 2주차 ppt  (0) 2013.02.08