인프런 커뮤니티 질문&답변

2403docB님의 프로필 이미지

작성한 질문수

[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part3: 유니티 엔진

Resource Manager

return Object.Instantiate(prefab,parent);에 대해 질문있습니다.

해결된 질문

작성

·

417

0

1) prefab 파일에서 tank = Managers.Resource.Instantiate("Tank")에서 호출 당함

2) ResourcesManager 파일에서 GameObject를 사용해 prefab 오브젝트를 만들어서 그 안에 Prefabs 폴더 안에 있는 Tank 모델 경로를 가져와서 넣음.

그렇다면 return Object.Instantiate(prefab,parent);에 있는 Object는 prefab를 말하는건가요?

Object를 쓰지않으면 자기 자신을 불러오는 재귀함수가 되기때문이라는건 알겠는데 저 Object는 어디서 호출당한건지, 아니면 약속처럼 사용하는 언어인지 혼란이 와서 질문합니다.

답변 2

2

Rookiss님의 프로필 이미지
Rookiss
지식공유자

안녕하세요.

Object(대문자)는 C# 표준의 object(소문자)랑은 아무 관계가 없고,
유니티 엔진에서 제공하는 클래스입니다.
Object에 마우스를 갖다 대고 [F12] 키를 누르면 다음과 같이 살짝 인터페이스를 엿볼 수 있습니다.

Object는 설명에서도 나와있지만 [유니티가 참조할 수 있는 모든 객체의 조상 클래스]라고 합니다.
따라서 객체 생성/삭제 기능들도 Object 클래스 안에 정의되어 있는 것을 볼 수 있습니다.

결국 Resources.Load이나 Object.Instantiate 모두 유니티에서 제공하는 기능들인데,
Instantiate의 경우 Object 클래스 안에 있는 static 함수로 기능을 제공하고 있습니다.
이걸 더 사용하기 편리하게 비슷한 인터페이스로 ResourceManager에서 Instantiate을 직접 정의하고,
그 함수 내부에서는 유티에서 제공하는 함수를 호출하는 것입니다.

0

2403docB님의 프로필 이미지
2403docB
질문자

알기 쉬운 설명 감사합니다!

2403docB님의 프로필 이미지

작성한 질문수

질문하기