아래 링크의 영상을 참고하여 안드로이드 플랫폼으로 빌드를 해보았다.
https://www.youtube.com/watch?v=IJxc-ANxO-w
하지만 기존에 제작한 대로 Build를 해보니
게임 화면에서 버튼들이 짤리는 현상이 발생했다.
기존에는 동시에 숨기거나 보이게 하는 버튼들을 빈 오브젝트에 묶어서 정리하였는데
이 방식으로는 문제가 생기기에 묶지 않는 방식을 택하였더니 해결되었다.
GameEnd 오브젝트 같은 경우는 화면 가운데에 뜨는 것이라
아무런 문제가 없기에 수정하지 않았다.
"일시정지" 버튼과 좌우에 있는 이동키들은 앵커를 사용하여
각각 좌측 상단, 좌측 하단, 우측 하단에 고정한 뒤 일정 간격을 두도록 설정하였다.
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using UnityEngine.SceneManagement;
public class GameManager : MonoBehaviour
{
// for Setting
public GameObject inSetting;
public GameObject mainButton;
// Snake Var
public GameObject snake;
// Score Var
public Text scoreText;
public int score = 0;
// Pause Var
bool isPause = false;
public Text pauseText;
// for Game Over & Clear
public GameObject gameEnd;
public GameObject[] gameButton; // 배열로 처리
public Text endText;
void Update()
{
}
// Start Button
public void GameStart()
{
// Change Scene
SceneManager.LoadScene(1);
}
// Setting Button
public void GameSetting()
{
// On or Off the Object
inSetting.SetActive(true);
mainButton.SetActive(false);
}
// Back Button in Setting
public void SettingBack()
{
// On or Off the Object
inSetting.SetActive(false);
mainButton.SetActive(true);
}
// Add Score
public void AddScore(int point)
{
score += point;
scoreText.text = string.Format("{0:n0}", score); // {0:n0}: 세자리마다 쉼표로 나눠주는 숫자 양식
// Clear Check
if (score >= 100)
{
GameClear();
}
}
// Pause Game
public void TimePause()
{
if (isPause)
{
// Resume
Time.timeScale = 1;
pauseText.text = "일시정지";
isPause = false;
}
else
{
// Pause
Time.timeScale = 0;
pauseText.text = "다시시작";
isPause = true;
}
}
// Game Over
public void GameOver()
{
Time.timeScale = 0;
endText.text = "GAME OVER";
gameEnd.SetActive(true);
for (int i = 0; i < 3; i++) // 배열이므로 반복문 사용
{
gameButton[i].SetActive(false);
}
}
// Game Retry
public void GameRetry()
{
SceneManager.LoadScene(1);
Time.timeScale = 1;
}
// to Main Menu
public void GameToMain()
{
// Change Scene
SceneManager.LoadScene(0);
Time.timeScale = 1;
}
// Game Clear
public void GameClear()
{
Time.timeScale = 0;
endText.text = "GAME CLEAR";
gameEnd.SetActive(true);
for (int i = 0; i < 3; i++) // 배열이므로 반복문 사용
{
gameButton[i].SetActive(false);
}
}
}
GameManager에서 게임이 끝났을 때(게임 오버 또는 게임 클리어)
"일시정지" 버튼과 이동키가 사라지는 것을 관리하는데
스크립트에서 이 오브젝트들을 각각 연결받는 것이 아닌 배열로 처리함으로써
보다 깔끔하게 처리했다고 생각한다.
궁금하신 점은 밑에 댓글 바랍니다
'메모장 > 스네이크 게임' 카테고리의 다른 글
스네이크 게임 - 해상도 변경 (0) | 2021.01.21 |
---|---|
스네이크 게임 - 게임 클리어 판정 (0) | 2021.01.20 |
스네이크 게임 - 게임 오버 판정 (0) | 2021.01.19 |
스네이크 게임 - 메인 메뉴와 일시 정지 (0) | 2021.01.18 |
스네이크 게임 - 점수 카운트 (0) | 2021.01.17 |