저번시간까지는 승부 버튼을 누르면 플레이어의 상태도 저장하고,
적이 어떤것을 냈는지까지 나오게 만들었습니다.
이제 본격적인 결과를 내고, 결과화면을 만들것입니다.
결과를 계산하여 결과화면 보여주기 |
이제 결과를 계산하기 위해 아래의 코드를 참조하여 붙혀넣기를 해줍니다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 |
using UnityEngine; using System.Collections; //각 플레이어의 상태를 지정하기위한 열거형 enum Player_State { Ga,Ba,Bo }; public class GM : MonoBehaviour { Player_State _player_State; Player_State _enemy_State; //유저와 적의 이미지, 결과 이미지 public UISprite player_Img; public UISprite enemy_Img; public UISprite result_Img; //카운트 이미지 public UISprite count_Img; //유저의 버튼 public GameObject player_Ga_Button; public GameObject player_Ba_Button; public GameObject player_Bo_Button; //승부 버튼 public GameObject stop_Button; //게임의 시작 유무를 체크 bool gameStart = false; //프레임마다 이미지를 바꾸기 위한 카운트 int _cnt; // Use this for initialization void Start () { //카운트 코루틴 호출 StartCoroutine(Count()); } // Update is called once per frame void Update() { //게임 시작이 되면 이미지를 마구 섞어주는 효과를 준다. if (gameStart) { _cnt++; if (_cnt > 0) { enemy_Img.spriteName = "Ga"; } if (_cnt > 1) { enemy_Img.spriteName = "Ba"; } if (_cnt > 2) { enemy_Img.spriteName = "Boouo"; _cnt = 0; } } } //카운트 코루틴 IEnumerator Count() { count_Img.spriteName = "3"; yield return new WaitForSeconds(1.0f); count_Img.spriteName = "2"; yield return new WaitForSeconds(1.0f); count_Img.spriteName = "1"; yield return new WaitForSeconds(1.0f); count_Img.spriteName = "Go"; //시작된 이후에는, 가위바위보 선택버튼과 승부 버튼을 On 해준다. player_Ga_Button.gameObject.SetActive(true); player_Ba_Button.gameObject.SetActive(true); player_Bo_Button.gameObject.SetActive(true); stop_Button.gameObject.SetActive(true); //게임 시작을 알려줌. gameStart = true; } //유저가 버튼을 눌러 이미지를 변경하고, 플레이어의 상태도 바꿔주는 메소드 모음 void PlayerButtonImgChange_Ga() { player_Img.spriteName = "Ga"; _player_State = Player_State.Ga; } void PlayerButtonImgChange_Ba() { player_Img.spriteName = "Ba"; _player_State = Player_State.Ba; } void PlayerButtonImgChange_Bo() { player_Img.spriteName = "Boouo"; _player_State = Player_State.Bo; } //게임의 승부를 결정짓는다. void GameEndButton() { //게임이 끝났으므로 다시 Start를 false로 바꿔준다. gameStart = false; //적이 어떤 것을 낼지 결정하고 보여준다. int _randomNum = Random.Range(0, 3); if (_randomNum == 0) { enemy_Img.spriteName = "Ga"; _enemy_State = Player_State.Ga; } else if(_randomNum == 1) { enemy_Img.spriteName = "Ba"; _enemy_State = Player_State.Ba; } else if(_randomNum == 2) { enemy_Img.spriteName = "Boouo"; _enemy_State = Player_State.Bo; } //플레이어와 적이 낸 것을 비교한 후, 결과 화면을 보여준다. //결과 화면 이미지를 On해준다. result_Img.gameObject.SetActive(true); //플레이어가 가위를 냈을때 if(_player_State == Player_State.Ga) { if (_enemy_State == Player_State.Ga)//적이 가위를 냄 { result_Img.spriteName = "Draw"; } else if (_enemy_State == Player_State.Ba)//적이 바위를 냄 { result_Img.spriteName = "Lose"; } else if (_enemy_State == Player_State.Bo)//적이 보를 냄 { result_Img.spriteName = "Win"; } } //플레이어가 바위를 냈을때 if (_player_State == Player_State.Ba) { if (_enemy_State == Player_State.Ga)//적이 가위를 냄 { result_Img.spriteName = "Win"; } else if (_enemy_State == Player_State.Ba)//적이 바위를 냄 { result_Img.spriteName = "Draw"; } else if (_enemy_State == Player_State.Bo)//적이 보를 냄 { result_Img.spriteName = "Lose"; } } //플레이어가 보를 냈을때 if (_player_State == Player_State.Bo) { if (_enemy_State == Player_State.Ga)//적이 가위를 냄 { result_Img.spriteName = "Lose"; } else if (_enemy_State == Player_State.Ba)//적이 바위를 냄 { result_Img.spriteName = "Win"; } else if (_enemy_State == Player_State.Bo)//적이 보를 냄 { result_Img.spriteName = "Draw"; } } } } Colored by Color Scripter |
cs |
이 코드에서 추가된 내용은, 플레이어가 낸 것에 따라 결과가 어떻게 구성되고 바뀌는지에 대해서 추가되었습니다.
코드를 쓰고 나면 GM스크립트의 Result_Img 부분이 None으로 되어있을 것입니다.
하이어라키에서 끌어서 넣어주세요.
이제 게임을 진행하시면!
이런식으로 허접하게 결과가 나옵니다.
결과화면 깔끔하게 마무리 짓고, First씬으로 되돌아가는 버튼 만들기 |
하이어라키에 있는 게임오브젝트들을 다 활용했는데!
Button_GotoFirst 라는 게임오브젝트만 현재 활용을 못하고 있습니다.
이제 이녀석을 사용할 차례입니다.
아마 이게 최종코드가 될 것입니다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 |
using UnityEngine; using System.Collections; //각 플레이어의 상태를 지정하기위한 열거형 enum Player_State { Ga,Ba,Bo }; public class GM : MonoBehaviour { Player_State _player_State; Player_State _enemy_State; //유저와 적의 이미지, 결과 이미지 public UISprite player_Img; public UISprite enemy_Img; public UISprite result_Img; //카운트 이미지 public UISprite count_Img; //유저의 버튼 public GameObject player_Ga_Button; public GameObject player_Ba_Button; public GameObject player_Bo_Button; //승부 버튼 public GameObject stop_Button; //Fist씬으로 돌아가는 버튼 public GameObject goto_First_Button; //게임의 시작 유무를 체크 bool gameStart = false; //프레임마다 이미지를 바꾸기 위한 카운트 int _cnt; // Use this for initialization void Start () { //카운트 코루틴 호출 StartCoroutine(Count()); } // Update is called once per frame void Update() { //게임 시작이 되면 이미지를 마구 섞어주는 효과를 준다. if (gameStart) { _cnt++; if (_cnt > 0) { enemy_Img.spriteName = "Ga"; } if (_cnt > 1) { enemy_Img.spriteName = "Ba"; } if (_cnt > 2) { enemy_Img.spriteName = "Boouo"; _cnt = 0; } } } //카운트 코루틴 IEnumerator Count() { count_Img.spriteName = "3"; yield return new WaitForSeconds(1.0f); count_Img.spriteName = "2"; yield return new WaitForSeconds(1.0f); count_Img.spriteName = "1"; yield return new WaitForSeconds(1.0f); count_Img.spriteName = "Go"; //시작된 이후에는, 가위바위보 선택버튼과 승부 버튼을 On 해준다. player_Ga_Button.gameObject.SetActive(true); player_Ba_Button.gameObject.SetActive(true); player_Bo_Button.gameObject.SetActive(true); stop_Button.gameObject.SetActive(true); //게임 시작을 알려줌. gameStart = true; } //유저가 버튼을 눌러 이미지를 변경하고, 플레이어의 상태도 바꿔주는 메소드 모음 void PlayerButtonImgChange_Ga() { player_Img.spriteName = "Ga"; _player_State = Player_State.Ga; } void PlayerButtonImgChange_Ba() { player_Img.spriteName = "Ba"; _player_State = Player_State.Ba; } void PlayerButtonImgChange_Bo() { player_Img.spriteName = "Boouo"; _player_State = Player_State.Bo; } //게임의 승부를 결정짓는다. void GameEndButton() { //게임이 끝났으므로 다시 Start를 false로 바꿔준다. gameStart = false; //적이 어떤 것을 낼지 결정하고 보여준다. int _randomNum = Random.Range(0, 3); if (_randomNum == 0) { enemy_Img.spriteName = "Ga"; _enemy_State = Player_State.Ga; } else if(_randomNum == 1) { enemy_Img.spriteName = "Ba"; _enemy_State = Player_State.Ba; } else if(_randomNum == 2) { enemy_Img.spriteName = "Boouo"; _enemy_State = Player_State.Bo; } //플레이어와 적이 낸 것을 비교한 후, 결과 화면을 보여준다. //결과 화면 이미지를 On해준다. result_Img.gameObject.SetActive(true); //플레이어가 가위를 냈을때 if(_player_State == Player_State.Ga) { if (_enemy_State == Player_State.Ga)//적이 가위를 냄 { result_Img.spriteName = "Draw"; } else if (_enemy_State == Player_State.Ba)//적이 바위를 냄 { result_Img.spriteName = "Lose"; } else if (_enemy_State == Player_State.Bo)//적이 보를 냄 { result_Img.spriteName = "Win"; } } //플레이어가 바위를 냈을때 if (_player_State == Player_State.Ba) { if (_enemy_State == Player_State.Ga)//적이 가위를 냄 { result_Img.spriteName = "Win"; } else if (_enemy_State == Player_State.Ba)//적이 바위를 냄 { result_Img.spriteName = "Draw"; } else if (_enemy_State == Player_State.Bo)//적이 보를 냄 { result_Img.spriteName = "Lose"; } } //플레이어가 보를 냈을때 if (_player_State == Player_State.Bo) { if (_enemy_State == Player_State.Ga)//적이 가위를 냄 { result_Img.spriteName = "Lose"; } else if (_enemy_State == Player_State.Ba)//적이 바위를 냄 { result_Img.spriteName = "Win"; } else if (_enemy_State == Player_State.Bo)//적이 보를 냄 { result_Img.spriteName = "Draw"; } } //쓸데없는 버튼들과 UI는 모두 Off를 해준다 player_Ga_Button.gameObject.SetActive(false); player_Ba_Button.gameObject.SetActive(false); player_Bo_Button.gameObject.SetActive(false); stop_Button.gameObject.SetActive(false); //First씬으로 되돌아 가는 버튼을 On해준다. goto_First_Button.gameObject.SetActive(true); } void GoToFirst() { Application.LoadLevel("First"); } } Colored by Color Scripter |
cs |
이번 코드에서는, 마지막으로 게임이 끝났기 때문에 게임진행과 관련된 UI를 모두 Off해주고
First씬으로 돌아가기 위한 버튼생성을 위한 코드가 추가되었습니다.
코드를 추가하고나면 아래와 같이 버튼오브젝트를 드래그앤드롭으로 추가해줍니다.
그리고 마지막으로 버튼이 어떤 메소드를 호출할지 넣어줍니다!
이러면 모든 게임의 한 사이클이 완성되었습니다!
게임이 끝나면 First씬으로 가는 버튼이 생길것이며 누르면 First씬으로 넘어가고 다시 버튼을 누르면 MainGame씬으로 넘거가는
무한반복이 가능해집니다.
게임 제작은 여기까지 끝났습니다!!!!
신난다!~~~
마치며 |
뒤로 갈수록 앞서 설명했던 것들의 노가다가 연속이 많이 될 것입니다.
원래 모든건 반복연습이 중요합니다. 열심히 하다보면 눈감고도 코딩하는 실력이 되실겁니다(는 훼이크?)
다음시간엔 마지막으로 PC버전으로 빌드하는 것을 해보고 마치도록 하겠습니다!
'기타' 카테고리의 다른 글
왕초보개발자가 유니티로 게임만들기! 2 (0) | 2021.11.03 |
---|---|
왕초보개발자가 유니티로 게임만들기!(1) (0) | 2021.11.03 |
가을 캠핑요리 추천~! (0) | 2021.10.10 |
가을디저트 보늬밤만들기🍂🌰 (0) | 2021.10.10 |
스팀 게임 출시작 관련 소식, 21년 5월에는 어떤 게임들이? (0) | 2021.10.07 |