-
(15) Setting Scene # 자잘한 보완 & Credit SceneGalaxy Ball/1. 멀티플레이 - 대전모드 2024. 4. 2. 21:09
생각해보니 시작화면과 인게임에서 흘러나오는 BGM이 동일하다
크게 문제될건 없지만 그래도 각자 다른 BGM이 흘러나오는게 더 나을것같으니 변경해주자
최대한 비슷한 분위기에 바로 다음에 나올 인게임 BGM의 흐름을 거슬리게 하지 않을 BGM을 찾아
시작화면 GameManager에 넣어준다. 볼륨도 인게임 BGM과 비슷하게 조절해주자
이번엔 버튼을 누를때 나는 효과음을 추가해주자
public class ButtonManager : MonoBehaviour { public Button SinglePlayer; public Button MultiPlayer; public Button OnlinePlay; public Button Setting; public Button Quit; public AudioSource ButtonAudio; // 추가 .... void OnMultiPlayerClicked() { ButtonAudio.Play(); // 버튼 누를시 재생 SceneManager.LoadScene("Main Scene"); }
ButtonManager로 가서 오디오소스 ButtonAudio를 전역변수로 추가시켜준뒤
모든 버튼 클릭 메서드에 ButtonAudio를 재생시키도록 해주면된다
그리고 ButtonManager에 오디오소스를 추가하여 버튼클릭으로 사용할 효과음을 넣어준뒤
그 컴포넌트를 그대로 ButtonAudio에 넣어주자. 물론 Play On Awake는 비활성화한다
공 튀기는 소리에 묻히는 감이 있지만 그래도 작동은 잘 되는것을 확인할 수 있다
이제 시작화면의 마무리가 될 설정창을 만들어보도록 하자
전글에서 적었듯이 설정창에 들어갈 내용은 3가지
<BGM, Sound Effect, Credit> 이다
설정창도 우선은 시작화면 씬을 복붙해서 가져와 쓰는걸로 하겠다
씬을 만들때 가장 먼저 해야하는건 씬등록이다. 정말 자주 까먹다가 나중에 생각날것 같으니 지금 미리 해두자
하는김에 Credit Scene도 함께 등록해주었다
우선 볼륨 ON/OFF 역할을 해줄 스위치 버튼 이미지를 따오자
스위치 ON/OFF 버튼을 같이 가져와 겹쳐준뒤 나머지 버튼들도 배치시키자
이제 버튼의 상호작용에 대해 구현할건데, 이미 전에 썼던 글과 내용이 대부분 일치하므로
설명만 간단하게 한뒤 코드를 삽입하겠다
BGM_ON & BGM_OFF : 스위치 버튼
Sound Effect_ON & Sound Effect_OFF : 스위치 버튼
Credit : Credit Scene 로드
Back : Start Scene 로드
using System; using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.SceneManagement; using UnityEngine.UI; public class SettingButtonManager : MonoBehaviour { public Button BGM_ON; public Button BGM_OFF; public Button Sound_Effect_ON; public Button Sound_Effect_OFF; public Button Credit; public Button Back; public AudioSource ButtonAudio; void Start() { BGM_ON.onClick.AddListener(BGM_ONClicked); BGM_OFF.onClick.AddListener(BGM_OFFClicked); Sound_Effect_ON.onClick.AddListener(Sound_Effect_ONClicked); Sound_Effect_OFF.onClick.AddListener(Sound_Effect_OFFClicked); Credit.onClick.AddListener(CreditClicked); Back.onClick.AddListener(BackClicked); } void BGM_ONClicked() { ButtonAudio.Play(); BGM_ON.gameObject.SetActive(false); BGM_OFF.gameObject.SetActive(true); } void BGM_OFFClicked() { ButtonAudio.Play(); BGM_ON.gameObject.SetActive(true); BGM_OFF.gameObject.SetActive(false); } void Sound_Effect_ONClicked() { ButtonAudio.Play(); Sound_Effect_ON.gameObject.SetActive(false ); Sound_Effect_OFF.gameObject.SetActive (true ); } void Sound_Effect_OFFClicked() { ButtonAudio.Play(); Sound_Effect_ON.gameObject.SetActive(true); Sound_Effect_OFF.gameObject.SetActive(false); } void CreditClicked() { ButtonAudio.Play(); SceneManager.LoadScene("Credit Scene"); } void BackClicked() { ButtonAudio.Play(); SceneManager.LoadScene("Start Scene"); } }
스크립트를 짜준뒤 변수명에 맞게 버튼과 오디오를 배치해준다
잘 작동하는것을 확인할 수 있다
문제는 이제 스위치 버튼을 누를때마다 BGM과 Sound Effect가 키고 꺼짐이 구현되야 하는데..
원래는 Event Trigger 컴포넌트로 해보려 했으나 문제는 Setting Scene에서만 동작할뿐 다른 씬에있는 오브젝트를
이곳으로 불러올수가 없다는 것이다
결국 스크립트로 해결을 해야할것 같다
--------------------------------------------------------------------------------------------
이번엔 Credit씬을 만들어보자
사실 Credit이라고 해봐야 UI 출처 남기는용 그 이상도 이하도 아니기에 지금은 그냥 임시용으로만 만들어두겠다
임시용이니 대충 만들긴 했지만 그래도 Back 버튼은 구현해야 하니 스크립트를 하나 만들어주자
맘같아선 SettingButtonManager 스크립트를 똑같이 넣어주고 싶지만
여기서 Back 버튼을 누르면 돌아갈곳은 Setting 씬이기에 하나 더 만들어주기로 한다
using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.SceneManagement; using UnityEngine.UI; public class CreditButtonManager : MonoBehaviour { public Button Back; public AudioSource ButtonAudio; void Start() { Back.onClick.AddListener(BackClicked); } void BackClicked() { ButtonAudio.Play(); SceneManager.LoadScene("Setting Scene"); } }
CreditButtonManager라는 이름으로 스크립트를 새로 만들어 저장해준뒤
알맞게 배치시켜주면 끝. 그리고 버튼매니저가 너무 많아져 폴더를 하나 따로 만들어주었다
'Galaxy Ball > 1. 멀티플레이 - 대전모드' 카테고리의 다른 글
(17) inGame Scene #Pause (0) 2024.04.03 (16) 아이템 디자인 (1) 2024.04.03 (14) Start Scene #UI 구현 & 씬 변환 (0) 2024.03.31 (13) Start Scene #UI & 배경 화면 보완 (1) 2024.03.29 (12) Start Scene #배경화면 (2) 2024.03.29