• 카테고리

    질문 & 답변
  • 세부 분야

    게임 프로그래밍

  • 해결 여부

    미해결

질문드립니다.

22.12.13 21:53 작성 22.12.13 21:55 수정 조회수 245

0

  1.  

    수업에서 ResourceManager 에

public GameObject Instantiate(string path, Transform parent = null)를 만들었잖아요?

그런데 PrefabTest에서 사용할 때

 

tank = Managers.Resource.Instantiate("Tank")를 사용했는데

 

위에서는 Instantiate(인자1, 인자2) 이고

뒤에 사용한것은

Instantiate(인자1) 이잖아요?

그럼 ResourceManager 에 있는

우리가 만든 Instantiate는 작동하지 않은게 아닌가요?

 

  1.  

Instantiate()의 인자안의 Transform parent = null)

Transform parent = null은 왜 한 것일까요?? 그리고

Transform 이라는 타입은 무엇인가요??

Transform 은 위치를 설정할 때 사용하는 거라고 생각하고있었는데 타입으로 나오니 무엇인지 잘 모르겠습니다..

 

답변 1

답변을 작성해보세요.

0

  1. 함수에서 = 등으로 인자의 초기값을 정해줄 수 있는데
    그러면 인자를 입력하지 않으면 해당 초기값으로 알아서 지정됩니다.

  2. Transform은 유니티에서 만든 struct이고 scale, rotation, translation 등 이동/회전/스케일 정보를 담고 있습니다. 자세한 내용은 어차피 이해하기 힘드니 그냥 받아드리시거나 추후 OpenGL, DX 등을 공부하면 정확한 의미를 이해할 수 있습니다.

롤로노이님의 프로필

롤로노이

2023.01.02

저도 저것때문에 초반에 맨탈이 터졌는데요

Transform parent = null 이부분은

 

실제 구현부에서 어떤식으로 코드를 풀어 쓸수 있냐면

Managers.Resource.Instantiate("Tank") 이뜻은

다시 말해 이런식으로 써지는것이기도 합니다

Managers.Resource.Instantiate("Tank", null)

이런식이 되는건데

그렇다고 Transform parent 값에 null 값이 들어가는게 아니고 단지 아무것도 값을 넣지 않는다 라는 개념이 맞아요

다시말해서 에디터에서 초기에 오브잭트가 만들어 질때 초기값이 만들어 지겠죠? 아무값이 없으면 애당초 오브잭트가 만들어 질수 없으니 어떠한 초기값이 셋팅이 되어 있을겁니다 그 초기값에 어떠한 값도 건들지 않겠다 라는 개념으로 이해 하시면 됩니다

 

저도 저것때문에 좀 맨탈이 흔들렸는데 저개념이 맞다고 하더라구요.... ㅋㅋ