일반적으로 C#에서 랜덤을 만드는 메소드는 Random.Range(int min,int max)를 사용한다.

백문이 불여일타!! 백번 듣는것보다 한번 쳐보는게 더 좋다고 생각하므로 일단 코드를 쳐보겠다.

BoardGameManager 스크립트를 불러서 Start()메소드에 Random.Range(0,4);를 추가시키자.

void Start(){

int randomNum = Random.Range(0,4);

print(randomNum);

}

값을 확인해야 하므로 프린트도 잊지 말자;


제대로 됬다면 콘솔창을 열어서 진짜로 랜덤값이 나오는지 확인해봅세.


랜덤값을 만들 줄 알게되었으니 이제 드럼통 예제로 다시 돌아가서 꽝을 넣어보도록 하겠다.

BarrelScript를 불러오자.

using UnityEngine;

using System.Collections;

public class BarrelScript : MonoBehaviour {

public bool isClick=false;

public bool isFail=false;//New Challenger!!

void Start (){}

void Update () {

if(isClick == true){

if(isFail ==false)

gameObject.transform.Rotate(0,1,0);

else if(isFail == true)

print ("You Failed!!");

}

}

}


BoardGanmeManager.cs에는 Start()메소드만 손봐주면 된다.
다음과 같이 넣어주면 끝.
void Start(){
int randomNum = Random.Range(0,4);
if(randomNum == 0)
Barrel_0.GetComponent<BarrelScript>().isFail =true;
else if(randomNum == 1)
Barrel_0.GetComponent<BarrelScript>().isFail =true;
else if(randomNum == 2)
Barrel_0.GetComponent<BarrelScript>().isFail =true;
else if(randomNum == 3)
Barrel_0.GetComponent<BarrelScript>().isFail =true;
}

첫번째 코드를 분석해보면 꽝인 경우에는 else if로 넘어가서 "You Failed!!"를 콘솔에 출력하고 드럼통이 돌지 않을것이다.두번째 코드를 분석해보면 Start()메소드 안에 있으므로 시작과 동시에 randomNum값에 의해해당 GameObject형 Barrel_n의 isFail값도 정의되므로 이미 꽝은 정해져 있는것이다.

실행 화면. 이 루틴은 죽을때까지 버튼클릭 입력을 받는다.
이번에는 게임오버씬을 만들도록 하겠다.File>New Scene을 눌러라.

이제 적절하게 게임오버 화면을 만들어보라.
난 귀찮으니 그냥 다음같은 화면을 만들었다.

만들었으면 씬 저장하는걸 잊지 말자. 난 귀찮으니까 대충 만들었다.이제 게임오버 화면도 만들었으니 재도전 버튼을 만들고 싶다.단순 버튼 만드는것부터 해보자. 버튼을 누르면 콘솔창에 메세지를 띄울거다.

using UnityEngine;using System.Collections;
public class GameOverManager : MonoBehaviour { void Start () {} void Update () {} void OnGUI(){ if(GUI.Button (new Rect(495,300,100,50),"Try Harder")==true)                         //==true는 생략이 가능하다 print ("Replay"); } }

이 코드는 메인카메라에 붙여야 한다.


이제 실제 게임씬과 게임오버씬을 오고가는 씬 전환에 대해 생각해보자.

게임씬에서 꽝 -> 게임오버씬

게임오버씬에서 재도전 -> 게임씬

이런 구조로 되어 있다.


다시 게임씬으로 돌아가서 꽝이 되는 경우의 조건문을 들여다보자.

using UnityEngine;

using System.Collections;

public class BarrelScript : MonoBehaviour {

public bool isClick=false;

public bool isFail=false;//New Challenger!!

void Start (){}

void Update (){

if(isClick == true){

if(isFail ==false)

gameObject.transform.Rotate(0,1,0);

else if(isFail == true)

Application.LoadLevel("gameOverScene");

//기존의 print문을 이걸로 대체하면 ok.

}

}

}

씬을 전환할때는 Application.LoadLevel()메소드를 사용한다.

이 작업은 당연히 GameOverManager.cs에도 적용시켜 주어야 한다. 재도전 버턴을 누르면 게임씬으로 넘어오게..


그리고 가장 중요한 작업이 남아있다.

우리가 어떤 씬들을 사용하였는지 알려주어야하는 작업이 필요하다.

이 작업을 하지 않으면 각각의 씬들을 링크할 수 없다..


메뉴의 File>Build Settings를 클릭하자.

아래와 같은 그림이 나오는데 씬 파일들을 관리하는 곳이다. 현재 아무런것도 들어있지 않다.

우리가 사용해야 할 씬 2개를 빈곳으로 드래그 해서 넣어준다.


오른쪽에 보면 숫자가 붙어 있는데 이게 빌드할 순서이므로 게임씬을 먼저, 게임오버씬을 뒤로 놓자.

끌때는 x를 눌러서 꺼도 상관없다.

이제 게임씬에서 게임오버씬으로 넘어오는 작업은 끝났고,

마찬가지로 게임오버씬에서 게임씬으로 넘어오는 작업을 수행하자. 방법은 똑같다.


지금까지 만든 모든 작업들을 수행하면 아래와 같은 결과가 나온다.

실제 플레이(?) 동영상을 첨부하겠다.



,