사람과 사물 또는 시스템, 기계, 컴퓨터 프로그램 등 사이에서 의사소통을 할 수 있도록 일시적 또는 영구적인 접근을 목적으로 만들어진 물리적, 가상적 매개체를 뜻한다. 사용자 인터페이스는 사람들이 컴퓨터와 상호 작용하는 시스템이다.
public static gameManager I;
void Awake()
{
I = this;
}
gameManager의 싱글톤 화
rain 오브젝트와 rtan 오브젝트를 충돌시켜야하니 tag, collider를 추가
void OnCollisionEnter2D(Collision2D coll)
{
if (coll.gameObject.tag == "ground")
{
Destroy(gameObject);
}
if (coll.gameObject.tag == "rtan")
{
Destroy(gameObject);
gameManager.I.addscore(score);
}
}
rain 스트립트에 rtan 오브젝트와 충돌 시 실행할 함수를 설정
gameManager.I.addscore(score);
= gameManager의 addscore
함수를 호출한다.
using UnityEngine;
using UnityEngine.UI; // text를 사용할 수 있게 해주는 유니티의 기능
public class gameManager : MonoBehaviour
{
public GameObject rain;
public static gameManager I;
public Text scoreText; // UI 중 score를 계속해서 번화시키기 위해 선언
int totalscore;
void Awake()
{
I = this;
}
// Start is called before the first frame update
void Start()
{
InvokeRepeating("makeRain", 0, 0.1f);
}
// Update is called once per frame
void Update()
{
}
void makeRain()
{
Instantiate(rain);
}
public void addscore(int score)
{
totalscore += score; // rain, rtan 오브젝트가 충돌하면 score를 계속해서 덧셈해준다.
scoreText.text = totalscore.ToString(); // totalscore 값을 문자화 시켜서 UI의 score에 출력
???.text = text를 수정함
}
}
public Text scoreText;
와 UI의 Score를 연결
Score의 텍스트가 실시간으로 수정이 된다 !
float limit = 5f; // 게임 진행 시간을 5초로 초기화
void Update()
{
limit -= Time.deltaTime; // 게임의 시간이 점점 줄어들게 한다.
if (limit < 0) // 게임의 진행 시간이 0초가 된다면,
{
Time.timeScale = 0.0f; // 게임을 정지시킨다.
limit = 0.0f; // UI에 표시되는 시간을 0초로 초기화
}
timeText.text=limit.ToString("N2"); // UI에 표시되는 시간의 소수점 자릿수를 0.01까지
}
public GameObject panel; // gameManager에서 panel 오브젝트를 사용하겠다.
float limit = 5f;
void Update()
{
limit -= Time.deltaTime;
if (limit < 0)
{
limit = 0.0f;
panel.SetActive(true); // inactive 시켰던 panel을 active 시킨다.
Time.timeScale = 0.0f;
}
timeText.text = limit.ToString("N2");
}
using UnityEngine.SceneManagement;
public void retry()
{
SceneManager.LoadScene("MainScene"); // MainScene을 로드한다.
}
public void retry()
{
gameManager.I.retry();
}
void Start()
{
InvokeRepeating("makeRain", 0, 0.5f);
initGame();
}
void initGame() // 게임 재실행 시 초기화시킬 요소들
{
Time.timeScale = 1.0f; // 0.0f;로 정지시킨 게임을 다시 실행
totalScore = 0; // Score를 0점으로 초기화
limit = 5.0f; // 시간을 5초로 초기화
}
역시나 많은 개념들이 한 번에 쏟아졌다.. 하지만 처음 다뤄보는 프로그램이지만 사용자의 편의성을 굉장히 중시하였다는 것이 느껴졌다. 대부분이 드래그 앤 드랍으로 작동하였고 C#에 기본적으로 제공하는 기능들 또한 굉장히 편리했다.