반응형
5.7 프리팹과 공장 만들기
5.7.1 공장의 구성
- 화살 오브젝트를 1초에 한 개씩 만드는 공장(화살 제너레이터)를 생성
- 양산 기계가 설계도 대로 제품을 생산하는 구조
5.7.2 프리팹
- 같은 오브젝트를 많이 만들고 싶을 때 주로 프리팹을 사용한다.
- 프리팹 : 설계도, 인스턴스 : 제품
5.7.3 프리팹 장점
- 프리팹을 쓰면 변경 사항이 있을 때 프리팹 파일만 수정하면 되기 때문에 편하게 수정 가능
※ 공장을 만드는 방법
- 이미 있는 오브젝트를 사용해 프리팹을 만든다
- 제너레이터 스크립트를 만든다
- 빈 오브젝트에 제너레이터 스크립트를 적용한다
- 제너레이터 스크립트에 프리팹을 전달한다.
5.7.4 프리팹 만들기
화살 프리팹 만들기
ArrowGenerator
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class ArrowGenerator : MonoBehaviour
{
public GameObject arrowPrefab;
float span = 1.0f;
float delta = 0;
void Update()
{
this.delta += Time.deltaTime;
if ( this.delta > this.span )
{
this.delta = 0;
GameObject go = Instantiate(arrowPrefab);
int px = Random.Range(-6, 7);
go.transform.position = new Vector3(px, 7, 0);
}
}
}
- 인스턴스를 1초마다 한 개씩 생성한다.
- GameObject arrowPrefab; 에서 프리팹을 넣는 변수를 선언
- Update() 구문에서 프레임마다 실행되고, 앞 프레임과 현재 프레임의 시간차이는 Time.deltaTime; 에 대입된다.
- 프레임과 프레임 사이의 시간 차이를 delta에 모으고 합계가 1초 이상이 되면 인스턴스를 생성한다.
- Instantiate 매서드를 사용해서 생성된다. 매개변수로 프리팹을 전달하면 반환값으로 프리팹 인스턴스를 return해줌
- 화살표 x 의 좌표(position x => px) 는 -6~6 사이에 불규칙하게 위치하도록 Random클래스의 Range 메서드를 사용
5.7.6 빈 오브젝트에 제너레이터 스크립트 적용하기
- 빈 오브젝트에 제너레이터 스크립트를 적용해야 공장 오브젝트가 된다.
5.7.7 제너레이터 스크립트에 프리팹 전달하기
- 스크립트 내의 변수에 오브젝트 실체를 대입(연결)할 수 있게 하는 매우 편리한 방법을 사용
- 이 방법을 : 아웃렛 접속(콘센트에서 플러그를 꽂는 구멍)
- 스크립트 쪽에 플러그를 꽂을 수 있는 콘센트 구멍을 준비
※ 아웃렛 접속
- 스크립트 쪽에 콘센트 구멍을 만들어야 하므로 스크립트 변수 앞에 public 접근 수식자를 붙인다.
- public 접근 수식자를 붙인 변수가 Inspector 창에 보인다.
- Inspector 창의 콘센트 구멍에 대입할 오브젝트를 끼운다( Drag & Drop 해서 넣는다)
콘센트 구멍 만들기
- 아웃렛 접속을 이용해 arrowPrefab 변수에 프리팹 실체를 대입
반응형
'개발 > 유니티(UNITY)' 카테고리의 다른 글
5-5 유니티로 화살 피하기 게임 만들기(심화1) (0) | 2023.10.29 |
---|---|
5-4 유니티로 화살 피하기 게임 만들기 (0) | 2023.10.28 |
5-2 유니티로 화살 피하기 게임 만들기 (0) | 2023.10.26 |
5-1 유니티로 화살 피하기 게임 만들기 (0) | 2023.10.25 |
4장 자동차 움직이는 게임 만들기 (0) | 2023.09.12 |