✅ 오늘의 학습 목표
1. 알고리즘 (4)
2. 교재
1. 정렬 알고리즘
1. 병합 정렬 (Merge Sort)
계속해서 분할 및 정렬한 이후에 합치는 정렬 O(nlogn)

using UnityEngine;
public class MergeSort : MonoBehaviour
{
private int[] array = { 5, 2, 1, 8, 3, 7, 6, 4 };
void Start()
{
Debug.Log("정렬 전 : " + string.Join(", ", array));
MSort(array, 0, array.Length - 1);
Debug.Log("정렬 후 : " + string.Join(", ", array));
}
private void MSort(int[] arr, int left, int right)
{
if (left < right)
{
int mid = left + (right - left) / 2;
MSort(arr, left, mid);
MSort(arr, mid + 1, right);
Merge(arr, left, mid, right);
}
}
private void Merge(int[] arr, int left, int mid, int right)
{
int n1 = mid - left + 1; // 왼쪽 배열 크기
int n2 = right - mid; // 오른쪽 배열 크기
int[] leftArr = new int[n1]; // 임시 배열 크기
int[] rightArr = new int[n2];
for (int i = 0; i < n1; i++) // 왼쪽 배열 값 초기화
leftArr[i] = arr[left + i];
for (int i = 0; i < n2; i++) // 오른쪽 배열 값 초기화
rightArr[i] = arr[mid + 1 + i];
int j = left; // 시작점
int u = 0, v = 0; // 반복문용 임시 변수
while (u < n1 && v < n2)
{
if (leftArr[u] <= rightArr[v])
{
arr[j] = leftArr[u];
u++;
}
else
{
arr[j] = rightArr[v];
v++;
}
j++;
}
while (u < n1) // 왼쪽 배열이 남았다면
{
arr[j] = leftArr[u];
u++;
j++;
}
while (v < n2) // 오른쪽 배열이 남았다면
{
arr[j] = rightArr[v];
v++;
j++;
}
}
}
2. 교재
🥕 96페이지부터 시작!
※ 참고 : 슈팅 게임을 구현할 예정이나 오늘 수업은 복습 느낌이 강하다.인생 유니티 교과서 | 이영호
유니티 게임 개발 탑티어 강의! 버전 6로 전면 개정! [2021 세종도서 학술 부문 우수 도서 선정] 이 책은 지난 2024년 10월 17일 발표된 유니티 버전 6에 맞춰 전폭적인 기능 설명과 메뉴를 전면 개편
ebook-product.kyobobook.co.kr
1. Camera

게임뷰에 카메라를 2개 세팅하려면
카메라를 2개 배치해주고 인스펙터 창에서 Output에 Viewport Rect 값을 조절해주면 된다.
- Viewport Rect에서 X, Y는 시작 위치고, W, H는 가로/세로 크기다.
- 카메라끼리 서로 다른 Culling Mask 써서 서로 다른 오브젝트만 보이게 설정도 가능하다.
2. Light

씬에 조명이 여러 개 있을 때 Light Explorer 창을 통해서 관리할 수 있다 (Window → Rendering → Light Explorer)
3. Movement
using UnityEngine;
public class PlayerMove : MonoBehaviour
{
void Update()
{
// 월드 방향 이동
transform.position += Vector3.forward * 5 * Time.deltaTime;
// 로컬 방향 이동
transform.Translate(Vector3.forward * 5 * Time.deltaTime); // Space.Self
// 월드 방향 이동
transform.Translate(Vector3.forward * 5 * Time.deltaTime, Space.World);
transform.rotation = Quaternion.identity; // (0, 0, 0)
transform.rotation = Quaternion.Euler(new Vector3(30, 60, 120)); // 오일러 -> 쿼터니언
Debug.Log(transform.rotation.eulerAngles); // 쿼터니언 -> 오일러
var newRotation = transform.rotation.eulerAngles + Vector3.up * 5 * Time.deltaTime;
transform.rotation = Quaternion.Euler(newRotation);
transform.Rotate(Vector3.up * 5 * Time.deltaTime); // Space.Self
transform.Rotate(Vector3.up * 5 * Time.deltaTime, Space.World);
transform.RotateAround(Vector3.zero, Vector3.up, 5 * Time.deltaTime);
transform.LookAt(Vector3.zero);
}
}
4. Prefab

- Origin Prefab : Scene에 배치된 게임 오브젝트를 처음 Prefab으로 만든 원본

- Nested Prefab : Prefab 안에 다른 Prefab이 있는 계층구조 프리팹

- Varient Prefab : 원본 Prefab을 상속하여 부모의 구조나 속성을 유지하고 개별적 특성을 갖는 프리팹 (Origin에서 우클릭 → Create Variant)
'Unity > 멋쟁이사자처럼 부트캠프' 카테고리의 다른 글
| [멋쟁이사자처럼부트캠프] 유니티 게임 개발 5기(43일차) - 2D 슈팅 게임 (2) 디자인 패턴 적용 (7) | 2025.07.17 |
|---|---|
| [멋쟁이사자처럼부트캠프] 유니티 게임 개발 5기(42일차) - 2D 슈팅 게임 (1) (2) | 2025.07.16 |
| [멋쟁이사자처럼부트캠프] 유니티 게임 개발 5기(40일차) - 알고리즘 (3) (0) | 2025.07.14 |
| [멋쟁이사자처럼부트캠프] 유니티 게임 개발 5기(39일차) - 재귀 및 알고리즘 (2) (1) | 2025.07.11 |
| [멋쟁이사자처럼부트캠프] 유니티 게임 개발 5기(38일차) - 자료구조 (4) 및 알고리즘 (1) (4) | 2025.07.10 |