Preview
- UI
-- Canvas
-- Rect Transform
-- 앵커 프리셋(Anchor Preset)
- GameManaer와 싱글톤
- 직렬화(Serialization)
- Prefab
-- 프리팹 만들기
-- Instantiate()
- InvokeRepeating()
- deltaTime
- timeScale
- ToString 포맷
- SetActive
- LoadScene()
- Button
- ScriptingAPI
UI
- 카메라와 상관 없이 게임 화면에 바로 그려지는 그래픽 요소
- Camera View로는 보이지 않고, Game View에서 확인 가능
Canvas
- Canvas 컴포넌트가 있는 게임 오브젝트로, 모든 UI 요소는 Canvas 안에 위치해야함.
- UI 요소 생성할 경우 씬에 아직 캔버스가 없으면 자동으로 캔버스 생성하고 UI 요소는 이 캔버스의 자식으로서 생성됨
Rect Transform
- UI의 Transform과 관련된 설정
- PosX, PosY : 위치하고 있는 좌표값
- Width, Height : 너비와 높이

앵커 프리셋(Anchor Preset)
- 가장 자주 사용되는 고정 옵션 제공
ex) 이미지의 하위 오브젝트로 텍스트가 있고, 텍스트 크기를 이미지에 맞추어 조정하고 싶은 경우
=> Alt + Shift 후 우하단을 선택

참고 : https://docs.unity3d.com/kr/530/Manual/UIBasicLayout.html
https://docs.unity3d.com/kr/530/Manual/UICanvas.html
GameManager와 싱글톤
- GameManager : 게임의 전체적인 로직을 담당하는 스크립트
- 싱글톤 패턴에서 중심이 되는 인스턴스로 유일성을 보장하며 어디에서든 접근 가능
// 게임매니저를 싱글톤화
public static GameManager Instance;
private void Awake()
{
Instance = this;
}
참고 : https://blog.naver.com/os2dr/221536778783
https://glikmakesworld.tistory.com/2
직렬화(Serialization)
- 오브젝트의 상태를 저장 가능한 형식으로 변환하는 과정
- 유니티에서는 직렬화를 통해 게임 객체의 상태를 저장하고 로드
- MonoBehaviour를 상속받는 클래스의 변수들이 직렬화 대상
- public이나 SerializeField 사용하면 직렬화되어 Inspector창에서 확인 가능
※ GameManager에서 직렬화하여 열린 필드 모두 채워줘야함!
// public으로 직렬화
public GameObject rain;
public GameObject endPanel;
public Text scoreText;
public Text timeText;

https://docs.unity3d.com/kr/2022.3/Manual/script-Serialization.html
Prefab
- 게임 오브젝트를 생성, 설정 및 저장하여 해당 게임 오브젝트의 모든 컴포넌트, 프로퍼티 값, 자식 게임 오브젝트를 재사용 가능한 에셋으로 만듦
- 프리팹 에셋은 씬에 새로운 프리팹 인스턴스를 만들기 위한 템플릿 역할
프리팹 만들기
- 프리팹으로 만들려는 오브젝트를 Hierarchy 창에서 Project 창으로 Drag & Drop
- 아이콘이 파란색으로 변하며 프리팹으로 바뀐 것 확인
Instantiate()
public static Object Instantiate(Object original);
- 프리팹을 인스턴스화하는 함수
- 프리팹을 생성, 정확히는 프리팹을 이용해 사본을 생성하여 반환
public GameObject rain; // 프리팹화 된 오브젝트 rain
void MakeRain()
{
Instantiate(rain); // rain을 인스턴스화
}
https://docs.unity3d.com/kr/2018.4/Manual/Prefabs.html
https://docs.unity3d.com/kr/2018.4/Manual/CreatingPrefabs.html
InvokeRepeating()
- 지연 시간을 두고 반복적으로 어떤 메서드를 호출하는 함수
public void InvokeRepeating(string methodName, float time, float repeatRate);
methodName : 호출할 함수 이름
time : n초 후에 시작
repeatRate : n초마다 반복
void Start()
{
// 0초부터 MakeRain 함수를 1초마다 호출
InvokeRepeating("MakeRain", 0, 1f);
}
void MakeRain()
{
Instantiate(rain);
}
참고 : https://docs.unity3d.com/ScriptReference/MonoBehaviour.InvokeRepeating.html
deltaTime
public static float deltaTime;
- 마지막 프레임에서 현재 프레임까지의 간격(시간)
- pc 환경에 따라 다르며 모든 환경에서 동일하게 로직이 수행되도록 프레임 보정과 함께 사용
ex) 스톱워치
float totalTime = 0.0f; // 0에서 시작해서
void Update()
{
totalTime += Time.deltaTime; // 점점 늘어남
}
참고 : https://docs.unity3d.com/ScriptReference/Time-deltaTime.html
timeScale
public static float timeScale;
- 0이면 프로그램이 멈춘 것처럼 동작, 1이면 원래대로 돌아옴
Time.timeScale = 0f; // 멈춘 것처럼 동작
Time.timeScale = 1.0f; // 원래 시간흐름대로 복구
참고 : https://docs.unity3d.com/ScriptReference/Time-timeScale.html
ToString 포맷
- 변수를 문자열로 바꿔 ToString 사용할 때 인자로 포맷 형식을 지정할 수 있음
ex) 경과 시간 소수점 2자리까지 표시하기
public Text timeText;
float totalTime = 30.0f;
void Update()
{
totalTime -= Time.deltaTime;
timeText.text = totalTime.ToString("N2");
}
참고 : https://mentum.tistory.com/304
SetActive
public void SetActive(bool value);
- 인자로 들어오는 값에 따라 게임오브젝트를 활성화/비활성화 하는 함수
- true면 활성화, false면 비활성화
- 비활성화된 게임오브젝트는 Scene에서 일시적으로 제거된 상태로 보임
- 활성/비활성 Editor에서 on/off 단축키 : Alt + Shift + A
public GameObject endPanel;
void Update()
{
// 조건A를 만족하면 활성화
if (조건 A)
endPanel.SetActive(true);
}
LoadScene()
- SceneManager : Scene을 관리하는 매니저
- Build Settings에 있는 Scene 중 인자로 들어온 이름과 일치하는 Scene을 불러오는 함수(SceneManager의 메서드 中1)
public static void LoadScene(string sceneName, SceneManagement.LoadSceneMode mode = LoadSceneMode.Single);
ex) 게임 처음부터 불러와 다시 시작하는 로직
using UnityEngine;
using UnityEngine.SceneManagement;
public class RetryButton : MonoBehaviour
{
public void Retry()
{
SceneManager.LoadScene("MainScene");
}
}
참고: https://docs.unity3d.com/ScriptReference/SceneManagement.SceneManager.LoadScene.html
https://docs.unity3d.com/ScriptReference/SceneManagement.SceneManager.html
Button
- 사용자의 클릭에 반응하는 컴포넌트
- OnClick() 이벤트 목록에 실행될 함수를 등록
- 사용자가 Button 컴포넌트를 가지고 있는 오브젝트 클릭하면 등록된 함수 실행
- 아래와 같이 등록할 함수의 스크립트가 같은 Inspector내 존재해야함

ScriptingAPI
- Unity에서 자주 사용되는 것들을 편리하게 구현할 수 있도록 미리 제공되는 기능의 모음
- 공식 레퍼런스 문서도 버전별로 업데이트 되므로 모르면 참고하여 잘 활용하기!
'내일배움캠프 > TIL' 카테고리의 다른 글
| [내배캠][Unity6기][TIL] 3. 고양이 밥주기(1~4) (0) | 2024.09.06 |
|---|---|
| [내배캠][Unity6기][TIL] 2. 풍선을 지켜라(1~11) (0) | 2024.09.05 |
| [내배캠][Unity6기][TIL] 1. 빗물받는 르탄이(5~6) (0) | 2024.09.03 |
| [내배캠][Unity6기][TIL] 1. 빗물받는 르탄이(1~4) (0) | 2024.09.02 |
| [내배캠][Unity_6기][TIL] C# 기초 문법 리뷰, 클래스와 객체, 추가 학습 (0) | 2024.08.31 |