저처럼 코드 입력하기 싫고 실행을 해보고 싶은 분들,
Ctrl+C, Ctrl+V 복사 붙여넣기 해서 사용하세요.
한 번 실행해 보면 유니티 구조적 이해에 많은 도움됩니다.
김치런 튜토리얼 영상 링크
https://www.youtube.com/watch?v=A58_FWqiekI
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Spawner : MonoBehaviour
{
[Header("Setting")]
public float minSpawnDelay; // 최소 스폰 지연 시간
public float maxSpawnDelay; // 최대 스폰 지연 시간
[Header("References")]
public GameObject[] gameObjects; // 스폰할 게임 오브젝트의 배열
// 스크립트가 활성화될 때 호출
void OnEnable()
{
// 최소 및 최대 지연 시간 내에서 랜덤한 시간 후에 Spawn() 호출
Invoke("Spawn", Random.Range(minSpawnDelay, maxSpawnDelay));
}
// 스크립트가 비활성화될 때 호출
void OnDisable()
{
// 모든 예약된 호출 취소
CancelInvoke();
}
// 새로운 오브젝트를 스폰하는 함수
void Spawn()
{
// gameObjects 배열에서 무작위로 하나의 오브젝트를 선택
GameObject randomObject = gameObjects[Random.Range(0, gameObjects.Length)];
// 선택된 오브젝트를 현재 Spawner 위치에 생성
Instantiate(randomObject, transform.position, Quaternion.identity);
// 다음 Spawn 호출을 랜덤한 시간 후에 예약
Invoke("Spawn", Random.Range(minSpawnDelay, maxSpawnDelay));
}
}
코드 분석
스폰 딜레이 설정:
minSpawnDelay
와maxSpawnDelay
를 이용해 스폰 간격을 랜덤하게 조절.Random.Range(minSpawnDelay, maxSpawnDelay)
를 사용해 지정된 범위 내에서 지연 시간을 선택.
게임 오브젝트 배열:
gameObjects
배열에 스폰할 수 있는 오브젝트를 등록.Random.Range(0, gameObjects.Length)
로 배열에서 무작위로 하나의 오브젝트를 선택.
OnEnable
과OnDisable
:- 스크립트가 활성화(
OnEnable
)되면Spawn
호출을 예약. - 비활성화(
OnDisable
)되면 예약된 모든 호출을 취소(CancelInvoke
).
- 스크립트가 활성화(
Spawn
메서드:- 배열에서 무작위로 선택된 오브젝트를
Instantiate
를 통해 현재 위치(transform.position
)에 생성. - 스폰된 오브젝트는 기본 방향(
Quaternion.identity
)을 가짐. - 다음 스폰을 예약하기 위해
Invoke
를 재귀적으로 호출.
- 배열에서 무작위로 선택된 오브젝트를
코드 동작
- 스크립트가 활성화되면, 무작위 지연 시간 후에
Spawn
메서드가 호출되어 오브젝트가 생성됨. - 생성 후에는 또 다른 무작위 지연 시간 후에 다음
Spawn
이 호출되며, 반복적으로 동작. - 스크립트가 비활성화되면 모든 예약된 호출이 취소되어 스폰이 멈춤.
댓글 없음:
댓글 쓰기