이전 글에서 빗방울 타입을 랜덤으로 설정하는 법까지 했다. 지금 번거로운 것이 매번 재생버튼을 눌러줘야 빗방울이 하나씩 떨어지게 된다. 그렇다면 빗방울이 재생버튼 한번으로 계속 내리게 하는 방법에 대해서 알아보자.
1. GameManger 생성
빗방울이 계속 나오게 하기 위해서는 GameManager Object가 필요하다. 여기서 GameManager의 역할은 게임의 전체를 조율한다고 보면된다. 예를 들어 다시 시작, 점수, 피버타임, 광고 등등을 조율하는 역할이 이 GameManager 이다.
먼저 MainScene 우클릭 -> GameObject -> Create Empty를 눌러 GameManager을 생성한 후, Script 폴더에 가서도 C# Object로 GameManager를 생성해 준다.
그러면 아이콘 모양이 다른 GameManager이 생성되고 이를 드래그 앤 드롭 으로 Hierarchy의 GameManager Object에 넣어준다.
2. Prefabs 생성
빗방울을 복제하려면 여러 개를 생성할 수도 있지만, 이러면 굉장히 비효율적이고 수천 수만개가 되는순간 단순 노가다식이 돼버린다. 그래서 여기서 필요한게 바로 Prefabs이다.
Prefabs는 빗방울 Sprite를 복제할 수 있는 상태로 만들어주는 역할을 한다. 이는 Assets에서 관리하며 마찬가지로 드래그 앤 드롭으로 이를 해결할 수 있다.
Assets 폴더에 Prefabs폴더 생성 -> Rain Sprite를 드래그앤 드롭 및 Rain Object 삭제
3. 빗방울 복제하기
이제 본격적으로 빗방울을 복제해볼 것이다. 먼저 C# GameManager를 클릭하여 Visual Studio 로 가서 아래와 같이 선언해준다.
public GameObject Rain;
이는 GameObject중 Rain이라는 것을 사용하겠다는 뜻이다.
다시 Unity로 돌아가서 GameManager Object를 클릭해보면 Script항목에 Rain이라고 떠있다. Prefabs에 있는 Rain Sprite를 드래그 앤 드롭으로 여기 넣어주도록 하자
그리고 다시 C# Script로 돌아와서 아래 코드를 작성해주도록 하자.
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class GameManager : MonoBehaviour
{
public GameObject Rain;
// Start is called before the first frame update
void Start()
{
// 0.5초 마다 makeRain 함수를 호출한다.
InvokeRepeating("makeRain", 0, 0.5f);
}
// Update is called once per frame
void Update()
{
}
void makeRain()
{
Debug.Log("비가 내린다!");
}
}
InvokeRepeating에서 makeRain이라는 함수를 0.5초마다 계속 호출하기 때문에 Unity 콘솔에 비가 내린다라는 문구가 계속 찍힐 것이다.
이제 mainRain함수에 Instantiate() 메소드를 통해 빗방울을 계속 복제해주도록 하자
최종 코드
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class GameManager : MonoBehaviour
{
public GameObject Rain;
// Start is called before the first frame update
void Start()
{
// 0.5초 마다 makeRain 함수를 호출한다.
InvokeRepeating("makeRain", 0, 0.5f);
}
// Update is called once per frame
void Update()
{
}
void makeRain()
{
Instantiate(Rain);
//Debug.Log("비가 내린다!");
}
}
'Unity' 카테고리의 다른 글
[Unity](빗방울 게임 마무리) 게임 끝내기 (1) | 2023.10.27 |
---|---|
[Unity] 점수 적용하기 (2) | 2023.10.27 |
[Unity] 빗방울 추가 및 랜덤으로 빗방울 내리게하기 (0) | 2023.10.25 |
[Unity] Unity와 Visual Studio 연동 및 C#으로 마우스 좌클릭시 캐릭터 좌우 움직임 주기 (0) | 2023.10.25 |
[Unity] 게임 배경씬 및 캐릭터추가, 애니메이션 (0) | 2023.10.25 |