amplitude.init("2e2e5a386856efdf3237cf254a9d14d9"

[개념 콕] 유니티 Instantiate 함수

내일배움캠프 수료생이 개발에 꼭 필요한 핵심 개념만 콕 집어 드립니다.
Jun 05, 2024
[개념 콕] 유니티 Instantiate 함수
✍🏼
유니티(Unity) 입문자 여러분, 정보가 너무 많고 배워야 할 것도 산더미라 어디서부터 시작해야 할지 막막하신가요? 내일배움캠프 수료생들이 4개월 동안 배운 엄선된 게임 개발 핵심 개념을 직접 정리해서 알려 드립니다. 공부하다 막히거나 헷갈리는 개념이 있다면 개념 콕으로 정리해보세요.
 

1. 함수(Function)란?

함수는 특정 작업을 수행하는 코드 조각으로, 범위에 관계없이 독립된 기능을 수행합니다. 함수는 입력값에 따라 내부에 작성된 코드를 실행하고, 그 결과를 반환합니다. 예를 들어, a와 b를 더하여 그 값을 반환하는 함수는 다음과 같이 작성할 수 있습니다.
function FuncPlus(int a, int b) { return a + b; }
 

2. Instantiate 함수란?

Instantiate 함수 또한 함수의 하나로, 게임 오브젝트를 동적으로 생성하는 데 사용됩니다. 이 함수를 사용하면 코드를 통해 원하는 상황이나 위치에 오브젝트를 생성할 수 있습니다. 일반적으로 프리팹을 생성할 때 자주 사용됩니다. 동적으로 생성한다는 것은 프로그램 실행 시 미리 생성된 오브젝트가 아닌, 해당 객체가 필요한 순간에 생성하는 것을 의미합니다.
 

3. Instantiate 함수 사용 방법

Instantiate 함수는 다음과 같은 형태로 자주 사용됩니다.
Instantiate(Object original, Vector3 position, Quaternion rotation)
  • original: 생성할 객체 (주로 프리팹)
  • position: 생성될 위치
  • rotation: 생성 시 회전 상태
 
예시 코드 1
public class Attack : MonoBehaviour { public GameObject bullet; void fire() { Instantiate(bullet); } }
이 코드는 Fire 메서드가 호출되면 bullet 오브젝트를 즉시 생성합니다. 이 경우, bullet 오브젝트 원본의 transform.position과 Quaternion.rotation 값을 사용합니다. 원하는 값이 아니라면 매개변수를 모두 입력해주어야 합니다.
예시 코드 2
public class BulletSpawner : MonoBehaviour { public GameObject bullet; // bullet 프리팹 public Vector3 targetPosition; // 생성할 위치 void Start() { // bullet 프리팹을 targetPosition 위치에 Quaternion.identity(기본 회전값)로 생성 Instantiate(bullet, targetPosition, Quaternion.identity); } }
이 코드는 bullet 프리팹을 targetPosition 위치에 Quaternion.identity(기본 회전값)로 생성합니다.
이 코드를 보면 한 가지 의문이 들 수 있습니다. position 값은 이해하지만, 왜 회전값 까지 Quaternion.identity(객체의 기본 rotation값)을 입력할까요? 바로 유니티에서는 게임 오브젝트의 위치와 회전값을 함께 다루는 것이 일반적이며, 이를 통해 오류를 방지하기 때문입니다.
Instantiate(Object original, Transform parent) 형태로 사용하면 original 객체를 부모 객체의 자식으로 생성할 수 있습니다. 이런 식으로 생선한다면 bullet의 위치값과 회전값은 자연스럽게 부모 객체를 따릅니다.
이 외에도 몇 가지 오버로드(다른 매개변수를 가진 Instantiate 함수)가 존재하지만 기초 단계에서는 다음 네 가지 형태를 알면 충분합니다
Instantiate(original); Instantiate(original, position, rotation); Instantiate(original, parent); Instantiate(original, position, rotation, parent);
 
 

Instantiate 함수 더 알아보기

Visual Studio에서는 함수에 마우스를 올려놓으면 해당 함수의 기능과 매개변수에 대한 정보를 확인할 수 있습니다. 또한, 마우스를 올려놓은 상태로 Ctrl + 좌클릭을 하면 함수의 구현 코드를 볼 수 있습니다. 이 기능은 다른 사람의 코드를 분석할 때 유용합니다.
 
 

4. 오브젝트 파괴 함수, Destroy 함수

오브젝트를 파괴할 때는 직관적이고 간단합니다. Destroy() 함수를 사용하면 됩니다. Destroy(bullet)과 같이 사용하면 즉시 제거되며, Destroy(bullet, time)과 같이 사용하면 time초 후에 파괴됩니다.
오브젝트의 생성과 파괴는 프로그램 성능에 영향을 줄 수 있으므로 신중히 사용해야 합니다. 동일한 객체를 여러 번 활용한다면 활성화/비활성화만 하여 성능 저하를 막을 수 있습니다.
 
 

5. Instantiate 함수 더 알아보기

Visual Studio 팁

Visual Studio에서는 함수에 마우스를 올려놓으면 해당 함수의 기능과 매개변수에 대한 정보를 확인할 수 있습니다. 또한, 마우스를 올려놓은 상태로 Ctrl + 좌클릭을 하면 함수의 구현 코드를 볼 수 있습니다. 이 기능은 다른 사람의 코드를 분석할 때 유용합니다.
 

메서드(Method)란?

함수를 메소드로 착각하기 쉽습니다. 그러나 함수는 메소드가 아닙니다. 메서드는 함수의 하위 개념으로, 클래스, 구조체, 열거형 내부에 정의된 함수를 의미합니다. 즉, 모든 메서드는 함수이지만, 모든 함수가 메서드는 아닙니다.
  • 함수(Function) ⇒ 모든 곳에서 독립적으로 존재할 수 있는 코드 조각
  • 메소드(Method) ⇒ 클래스 내부에 정의된 함수
 

매개변수란?

매개변수는 함수가 입력값을 받아 다양한 작업을 수행할 수 있게 합니다.
함수를 요리 레시피에, 매개변수를 요리 재료라고 이해하시면 쉽습니다. 요리 재료가 레시피와 다르면 전혀 다른 요리가 탄생하듯, 매개변수 중 하나라도 잘못되면 함수는 의도한 결과를 내지 못할 것입니다.
 
 
 

내일배움캠프는 개발에 필요한 핵심만 배웁니다

지금까지 꼭 필요한 유니티 지식에 대해 알아보았습니다. 내일배움캠프에서는 전문가들이 선별한 핵심 게임 개발 지식으로 개발 공부도, 취업도 보다 효율적으로 할 수 있는데요. 국내 유수의 IT기업 출신 튜터님들과 실습 위주의 독보적인 커리큘럼으로 개발자 취업을 체계적으로 준비해보세요. 내일배움캠프 4개월, 여러분 인생의 가장 큰 터닝 포인트입니다.
 
 
 
CREDIT
글 | 우민규 내일배움캠프 수료생 편집 | 정효재 팀스파르타 에디터
 
 

취업 준비, 어디서부터 시작해야 할지 모르겠다면?

 
🧐비전공자인데 IT 업계 취업할 수 있을까?
😟프로젝트 경험이 부족한데, 어떻게 준비해야 할까?
🥺IT 기업으로 이직하고 싶은데 뭐부터 시작해야 할까?
 
이런 고민을 하고 있다면, 내일배움캠프의 IT 취업 컨설팅을 받아보세요.
취업 코칭 전문가들이 여러분의 고민을 해결해 드립니다.
 
다음 링크에 이메일을 입력하시면 메일로 1:1 커리어 상담권과 취준 자료집을 보내드릴게요.
 
Share article
Subscribe to our newsletter
RSSPowered by inblog