방명록
- Unity 게임 개발 #7 - 카드 매칭 게임<Teammate-Cardgame> 32023년 08월 08일 20시 55분 43초에 업로드 된 글입니다.작성자: noun06
유니티를 사용하여 개발한 카드 맞추기 게임입니다. 팀 미니 프로젝트로 진행하였습니다.
1. 오디오 조절하기
- 슬라이더 컴포넌트의 On Value Changed 리스트에 SetMusicVolume()함수를 넣어서 특정 음량의 크기를 조정.
//AudioManager.cs using System.Collections; using System.Collections.Generic; using UnityEngine; public class AudioManager : MonoBehaviour { public AudioClip bgmusic; public AudioSource audioSource; public AudioClip start; void Start() { audioSource.PlayOneShot(start); audioSource.clip = bgmusic; audioSource.Play(); } public void SetMusicVolume(float volume) //slider 오브젝트의 value를 오디오의 volume과 연동 { audioSource.volume = volume; } }
2. 보너스 시간 추가 및 감소
- 매칭에 성공했을 때 제한 시간을 추가해주고, 매칭에 실패했을 때 제한 시간을 줄이는 시스템.
- 감소하거나 추가되었을 때 잠깐 타이머 색상을 변경하여 가시성 향상.
//gameManager.cs public void isMatched() { string firstCardImage = firstCard.transform.Find("front").GetComponent<SpriteRenderer>().sprite.name; string secondCardImage = secondCard.transform.Find("front").GetComponent<SpriteRenderer>().sprite.name; if (firstCardImage == secondCardImage) { //... addTime(); //매치 성공 시 시간 추가 } else { //... if (time >= 10.0f) //시간이 10초 이상 일 때만 동작하게하여 난이도 조절 { ReduceTime(); //매치 실패 시 시간 감소 } } //... } void ChangeTimerColor() { GameObject.Find("timeText").GetComponent<Text>().color = Color.red; } void ReduceTime() //매칭 실패 시 시간 감소, 타이머 색상 변경 { time -= 2f; GameObject.Find("timeText").GetComponent<Text>().color = Color.gray; StartCoroutine("ReturnTimerColorCoroutine"); } void addTime() //매칭 성공 시 시간 증가, 타이머 색상 변경 { time += 2f; GameObject.Find("timeText").GetComponent<Text>().color = Color.yellow; StartCoroutine("ReturnTimerColorCoroutine"); } private IEnumerator ReturnTimerColorCoroutine()//타이머 색상 원상태로 변경 { yield return new WaitForSeconds(0.5f); GameObject.Find("timeText").GetComponent<Text>().color = Color.black; } //... }
3. 일시 정지 및 씬 매니징 개선
- 여러 군데로 흩어져있는 불필요한 스크립트를 없애고 하나의 씬매니져 스크립트로 관리.
- 게임 플레이 도중 일시 정지, 시간 정지 / 게임 재개.
- 시작 화면에서 게임 종료 버튼, 오디오 옵션 창 추가와 전반적인 게임 UI 1차 수정.
//sceneManager.cs using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.SceneManagement; public class sceneManager : MonoBehaviour { public static bool GamePause = true; public GameObject pauseMenuCanvas; public GameObject optionMenuCanvas; public void Resume() //게임 재개 { pauseMenuCanvas.SetActive(false); Time.timeScale = 1f; GamePause = false; } public void Pause() //게임 일시정지 { pauseMenuCanvas.SetActive(true); Time.timeScale = 0f; GamePause = true; } public void optionMenu() //옵션창 활성화 { optionMenuCanvas.SetActive(true); } public void optionMenuExit() //옵션창 비활성화 { optionMenuCanvas.SetActive(false); } public void startGame() //게임 씬 진입 { SceneManager.LoadScene("MainScene"); } public void enterStartMenu() //처음 씬 진입 { SceneManager.LoadScene("StartScene"); } public void exitGame() //게임 종료 { #if UNITY_EDITOR UnityEditor.EditorApplication.isPlaying = false; //유니티 상에서 PLAY 중지 #else Application.Quit(); //빌드 시 동작 #endif } }
<결과물>
'Unity' 카테고리의 다른 글
Unity 게임 개발 #9 - 카드 매칭 게임<Teammate-Cardgame> 5 (0) 2023.08.10 Unity 게임 개발 #8 - 카드 매칭 게임<Teammate-Cardgame> 4 (0) 2023.08.09 Unity 게임 개발 #6 - 카드 매칭 게임<Teammate-Cardgame> 2 (0) 2023.08.07 Unity 게임 개발 #5 - 카드 매칭 게임<Teammate-Cardgame> 1 (0) 2023.08.01 Unity 게임 개발 #4 - 고양이 밥주기 슈팅 게임<catvsdog> (0) 2023.07.31 다음글이 없습니다.이전글이 없습니다.댓글