2025년 1월 6일 월요일

5. 김치런 게임 Spawner .cs 소스코드

저처럼 코드 입력하기 싫고 실행을 해보고 싶은 분들,
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));
    }
}

코드 분석

  1. 스폰 딜레이 설정:

    • minSpawnDelaymaxSpawnDelay를 이용해 스폰 간격을 랜덤하게 조절.
    • Random.Range(minSpawnDelay, maxSpawnDelay)를 사용해 지정된 범위 내에서 지연 시간을 선택.
  2. 게임 오브젝트 배열:

    • gameObjects 배열에 스폰할 수 있는 오브젝트를 등록.
    • Random.Range(0, gameObjects.Length)로 배열에서 무작위로 하나의 오브젝트를 선택.
  3. OnEnableOnDisable:

    • 스크립트가 활성화(OnEnable)되면 Spawn 호출을 예약.
    • 비활성화(OnDisable)되면 예약된 모든 호출을 취소(CancelInvoke).
  4. Spawn 메서드:

    • 배열에서 무작위로 선택된 오브젝트를 Instantiate를 통해 현재 위치(transform.position)에 생성.
    • 스폰된 오브젝트는 기본 방향(Quaternion.identity)을 가짐.
    • 다음 스폰을 예약하기 위해 Invoke를 재귀적으로 호출.

코드 동작

  • 스크립트가 활성화되면, 무작위 지연 시간 후에 Spawn 메서드가 호출되어 오브젝트가 생성됨.
  • 생성 후에는 또 다른 무작위 지연 시간 후에 다음 Spawn이 호출되며, 반복적으로 동작.
  • 스크립트가 비활성화되면 모든 예약된 호출이 취소되어 스폰이 멈춤.

댓글 없음:

댓글 쓰기

-


Sidewinder


World


FishMusic


LaughingBaby