유니티에서 프리팹(prefab)을 사용하는 방법에 대해 알아보겠습니다.
"프리팹"은 재사용 가능한 게임 오브젝트의 템플릿입니다. 쉽게 말해, 여러 번 사용될 수 있는 게임 오브젝트의 복사본으로 생각할 수 있습니다. 프리팹을 사용하면 유사한 오브젝트를 쉽게 만들고 유지 보수할 수 있습니다. 한 번 수정하면 해당 프리팹을 사용하는 모든 인스턴스에 자동으로 반영됩니다. 이것은 게임 개발 프로세스를 효율적으로 만들어주고, 일관성을 유지하며 시간을 절약하는 데 도움이 됩니다.
여기에서는 하늘에서 개구리가 무작위로 떨어지는 모양을 프리팹을 이용해서 만들어 보겠습니다.
1. 준비물 - 아래의 개구리 이미지
2. 프로젝트를 생성합니다 - 2D, 이름은 맘대로 ...
3. 개구리 이미지(frog.png)를 Asset으로 가져옵니다.
4. 화면에 개구리 이미지를 배치합니다.
5. C# 스크립트를 생성하고, 스크립트 이름을 "FrogController"로 변경합니다.
6. 스크립트를 아래와 같이 작성합니다.
using UnityEngine;
public class FrogController : MonoBehaviour
{
// Update is called once per frame
void Update()
{
transform.Translate(0, -0.1f, 0); // 아래로 떨어집니다.
// 화면 아래로 떨어지면 현재 객체(개구리)를 삭제합니다.
if(transform.position.y < -5.0f)
{
Destroy(gameObject);
}
}
}
7. 스크립트를 Hierarchy 창의 "frog"와 연결합니다.
8. 실행해 봅니다 - 개구리가 위에서 아래로 떨어지는 것을 확인합니다.
프리팹(Prefab)
다음은 프리팹을 이용해서 개구리가 무작위로 떨어지도록 만들어 보겠습니다.
9. Hierarchy 창에 있는 "frog"를 Assets 창으로 끌어옵니다 - 이렇게 하면 프리팹이 만들어 집니다.
이름을 "frogPrefab"으로 변경합니다.
프리팹이 만들어 졌으면 Hierarchy 창의 "frog"는 필요없으므로 삭제합니다.
10. 프리팹을 사용할 스크립트를 한 개 추가합니다 - 이름을 "FrogGenerator"라고 변경합니다.
11. 코드를 작성합니다.
using UnityEngine;
public class FrogGenerator : MonoBehaviour
{
public GameObject frogPrefab;
float speed = 1.0f;
float time = 0f;
// Start is called before the first frame update
void Start()
{
Application.targetFrameRate = 60;
}
// Update is called once per frame
void Update()
{
time += speed / 60;
if (time > speed)
{
time = 0;
int x = Random.Range(-6, 6); // -6 ~ 5의 랜덤한 정수
int y = Random.Range(3, 5);
GameObject flog = Instantiate(frogPrefab);
flog.transform.position = new Vector3(x, y, 0);
}
}
}
12. 빈 오브젝트를 한 개 생성하고, 이름을 "FrogGenerator"라고 변경합니다.
13. 이 오브젝트와 "FrogGenerator" 스크립트를 연결합니다.
14. 아래와 같이 "FrogGenerator" 스크립트와 프리팹을 연결합니다.
15. 실행합니다.
'유니티_unity' 카테고리의 다른 글
(유니티) 오브젝트가 화면 밖으로 나가면 삭제하기 (0) | 2024.04.09 |
---|---|
(유니티) 프리팹 Prefab: 마우스 버튼을 클릭한 자리에 프리팹 출력하기 (0) | 2024.04.09 |
(유니티) 버튼을 클릭하면 TextMeshPro에 1부터 100까지 합을 출력해 보자 (0) | 2024.03.30 |
(유니티) 사운드(Sound. 오디오, 소리) 출력하기 (0) | 2024.03.30 |
(유니티) Input.GetKey(): 키보드로 오브젝트 상하좌우 움직이기 (0) | 2024.03.25 |