[Bounce Game] ๐ฅ ๋ฏธ๋๊ฒ์ ๋ง๋ค๊ธฐ 4
1. UI ๊ตฌํํ๊ธฐ
Hierarchy
์์ create -> UI -> Canvas
๋ฅผ ๋ง๋ ๋ค.
UI
์ Button
์ ์์ฑํด์ค๋ค Option Button
์ด๋ผ๋ ์ด๋ฆ์ผ๋ก ๋ฐ๊ฟ์ค๋ค.
Panel
์ ์์ฑํด์ค๋ค Option
์ด๋ผ๋ ์ด๋ฆ์ผ๋ก ๋ฐ๊ฟ์ฃผ๊ณ , Option
์๋์ Button
์ 4๊ฐ ๋ง๋ ํ ์ด๋ฆ์ ๊ฐ๊ฐ Play
, Sound_On
, Sound_Off
, Menu
๋ก ๋ฐ๊ฟ์ค๋ค. ์ด๋ Sound
๋ฒํผ ๋๊ฐ๋ ์๋ก ๊ฒน์ณ ๋๋๋ค.
์ดํ ๋ฒํผ๋ณ ์์ ์ด ์ํ๋ Asset
์ ๋ฃ์ด์ค๋ค, Panel์๋ ์ ๋นํ ์์์ ๋ฃ์ด์ฃผ๊ณ , ํฌ๊ธฐ ์กฐ์ ์ ํ๋ค.
๊ทธ๋ฌ์ ๋ค์๊ณผ ๊ฐ์ด ๊ตฌํ๋์๋ค.
์ดํ Canvas
์ ์์์ผ๋ก UI_Manager
๋ผ๋ ์ด๋ฆ์ผ๋ก Empty
์ค๋ธ์ ํธ๋ฅผ ๋ง๋ ํ UI_Manager
๋ผ๋ ์คํฌ๋ฆฝํธ๋ฅผ ๋ง๋ค์ด์ ๋ฃ์ด์ค๋ค.
์คํฌ๋ฆฝํธ ์์ ๋ค์๊ณผ ๊ฐ์ ์ฝ๋๋ฅผ ๋ฃ์ด์ค๋ค.
public GameObject option_Button;
public GameObject option;
public GameObject sound_On;
public GameObject sound_Off;
public void Pause()
{
option_Button.SetActive(false);
option.SetActive(true);
}
public void Begin()
{
option_Button.SetActive(true);
option.SetActive(false);
}
public void Sound_On()
{
sound_On.SetActive(false);
sound_Off.SetActive(true);
}
public void Sound_Off()
{
sound_On.SetActive(true);
sound_Off.SetActive(false);
}
public void MainMenu()
{
}
๊ฐ๊ฐ์ ๋ฒํผ์ ๋ค์๊ณผ ๊ฐ์ด ํจ์๋ฅผ ๋ฐฐ์ ํด์ฃผ๋ฉด ๋๋ค.
์ดํ Sound_Off
์ค๋ธ์ ํธ์ inspector
์ ์๋ ์ด๋ฆ ์์ ๋ฒํผ์ ๋๋ฌ์ ๋นํ์ฑํ ์ํจ ํ์, Option
๋นํ์ฑํ๋ฅผ ์ํค๊ณ ๊ฒ์์ ์๋์ํฌ ์ ๋ค์๊ณผ ๊ฐ์ด ์ ์๋๋๋ค.
2. MainMenu Scene ๋ง๋ค๊ธฐ
๋ค์์ผ๋ก ์ด์ ๊น์ง ๋ง๋ค์๋ Scene
์ ๋ณต์ฌํ์ฌ MainMenu
๋ผ๋ ์ด๋ฆ์ผ๋ก ๋ฐ๊ฟ์ค๋ค. ์ดํ ์์ ์๋ GameManager
๋ฅผ ์ ์ธํ๊ณ ๋ค ์ง์์ค๋ค.
์ดํ ์๋ก์ด Canvas
๋ฅผ ๋ง๋ ํ MainMenu
๋ผ๋ ์ด๋ฆ์ผ๋ก Panel
์ ๋ง๋ ๋ค. MainMenu
์ด๋ฆ์ Panel์ ์์์ผ๋ก Text
์ Button
์ ๋ฃ์ด์ ๊พธ๋ฉฐ์ค๋ค. ๋๋ ๋ค์๊ณผ ๊ฐ์ด ๊ตฌ์ฑํ์๋ค.
๋ค์์ผ๋ก Stage_List
๋ผ๋ ์ด๋ฆ์ผ๋ก Panel์ ๋ง๋ ํ ๊ทธ ์์์ผ๋ก
Text์
Button`์ ๋ฃ์ด์ ๊พธ๋ฉฐ์ค๋ค. ์ดํ ๋์จ ๊ฒฐ๊ณผ๋ฌผ์ด๋ค.
3. MainMenu ๊ธฐ๋ฅ ๊ตฌํํ๊ธฐ
์ง๊ธ๊น์ง MainMenu
์ ์ฌ๋ฌ ์ค๋ธ์ ํธ๋ค์ ๋ง๋ค์ด ์ฃผ์๋ค. ์ด์ ๊ทธ ์ค๋ธ์ ํธ์ ๋ฒํผ๋ค์ ์ฌ๋ฌ๊ฐ์ง ๊ธฐ๋ฅ๋ค์ ๋ฃ์ด์ฃผ์ด์ผ ํ๋ค.
์ด๋ฅผ ์ํ์ฌ MainMenu_UI_Manager
์คํฌ๋ฆฝํธ๋ฅผ ๋ง๋ ํ ๋ค์ ์ฝ๋๋ฅผ ๋ฃ์ด์ค๋ค.
public class Bounce_MainMenu_UI_Manager : MonoBehaviour
{
private GameObject Game_Manager;
public GameObject MainMenu;
public GameObject Stage_list;
public GameObject Lock;
// Start is called before the first frame update
void Start()
{
Game_Manager = GameObject.FindGameObjectWithTag("GameManager");
if (Game_Manager.GetComponent<Bounce_GameManager>().Is_Go_Stage_List == true)
{
Go_Stage_List();
}
Is_Lock();
}
// Update is called once per fram
// ========================== Main Menu =========================
public void Go_Stage_List()
{
MainMenu.SetActive(false);
Stage_list.SetActive(true);
Game_Manager.GetComponent<Bounce_GameManager>().Is_Go_Stage_List = true;
}
public void Show_Rank()
{
}
public void End()
{
Application.Quit();
}
private void OnApplicationQuit()
{
Debug.Log("์ข
๋ฃ");
}
// ========================== Stage List =========================
public void Go_MainMenu()
{
MainMenu.SetActive(true);
Stage_list.SetActive(false);
Game_Manager.GetComponent<Bounce_GameManager>().Is_Go_Stage_List = false;
}
public void Go_Stage(int Stage)
{
Game_Manager.GetComponent<Bounce_GameManager>().Current_Stage = Stage;
SceneManager.LoadScene("Level " + Stage);
}
public void Is_Lock()
{
for (int i = 0; i <= Game_Manager.GetComponent<Bounce_GameManager>().Clear_Stage; i++)
{
Lock.transform.GetChild(i).gameObject.SetActive(false);
}
}
}
๊ฐ๊ฐ์ ๋ฒํผ์ ์๋ On Click()
Event ํจ์๋ค์ ๋ฃ์ด์ฃผ๋ฉด ๋๋ค.
๋ค๋ฅธ Scene
์ผ๋ก ์ด๋ํ๊ธฐ ์ํ์ฌ ๊ฐ๊ฐ์ Scene
๋ค์ Build
ํด์ฃผ์ด์ผ ํ๋ค.
์ด๋ฅผ ์ํด ์ง๊ธ๊น์ง ๋ง๋ค์ด๋ test
ํ์ผ์ ๋ณต์ฌํ์ฌ Level 1
์ด๋ผ๋ Scene
์ ๋ง๋ค์ด์ค๋ค. ์ดํ Level 1
์ ์์ ์ด ์ํ๋ ๋๋ก ๊พธ๋ฏผ๋ค. ๋ค ๊พธ๋ฉด์ผ๋ฉด ๋ค์๊ณผ ๊ฐ์ด Build Setting
์ ํด์ฃผ๋ฉด ๋๋ค.
๊ฐ์ธ ๊ณต๋ถ ๊ธฐ๋ก์ฉ ๋ธ๋ก๊ทธ์
๋๋ค.
ํ๋ฆฌ๊ฑฐ๋ ์ค๋ฅ๊ฐ ์์ ๊ฒฝ์ฐ ์ ๋ณดํด์ฃผ์๋ฉด ๊ฐ์ฌํ๊ฒ ์ต๋๋ค.๐