해결된 질문
작성
·
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
안녕하세요.
Object(대문자)는 C# 표준의 object(소문자)랑은 아무 관계가 없고,
유니티 엔진에서 제공하는 클래스입니다.
Object에 마우스를 갖다 대고 [F12] 키를 누르면 다음과 같이 살짝 인터페이스를 엿볼 수 있습니다.
Object는 설명에서도 나와있지만 [유니티가 참조할 수 있는 모든 객체의 조상 클래스]라고 합니다.
따라서 객체 생성/삭제 기능들도 Object 클래스 안에 정의되어 있는 것을 볼 수 있습니다.
결국 Resources.Load이나 Object.Instantiate 모두 유니티에서 제공하는 기능들인데,
Instantiate의 경우 Object 클래스 안에 있는 static 함수로 기능을 제공하고 있습니다.
이걸 더 사용하기 편리하게 비슷한 인터페이스로 ResourceManager에서 Instantiate을 직접 정의하고,
그 함수 내부에서는 유티에서 제공하는 함수를 호출하는 것입니다.
0