본문 바로가기

Unity19

스크립터블 오브젝트(Scriptable Object) / 능력 업그레이드(Ability Upgrade) Scriptable ObjectScriptableObject는 보통 MonoBehaviour를 상속받아 게임 오브젝트와 함께 동작하는 스크립트와 달리 씬에 존재하지 않아도 되는 데이터만 저장하는 객체이다.게임에서 반복적으로 사용되는 데이터(아이템, 능력치 등)의 설정을 줄이고, 저장 및 효율적으로 관리하는 데 사용된다. 왜 사용할까?- 데이터 재사용의 편리성 : 한 번 생성해두면 여러 오브젝트에서 공유 가능- 메모리 절약 : MonoBehaviour 기반 스크립트는 씬이 로드될 때마다 새롭게 생성되지만, ScriptableObject는 같은 데이터라면 하나만 로드해서 공유 가능- 유니티 에디터에서 편집 가능 : 에셋 파일로 저장되어 Unity 에디터에서 직접 값을 변경할 수 있음, CreateAssetM.. 2025. 3. 18.
열거형(enum) / 월드 좌표(World Position)와 스크린 좌표(Screen Position) / HUD(Head-Up Display) 열거형(enum) 관련된 값들을 그룹화하여 의미 있는 이름으로 정의하는 데이터 타입으로, 개발자가 정의한 특정한 값들만 가질 수 있도록 제한한다. 동작 방식public enum InfoType { Exp, Level, Kill, Time, Health }InfoType type = InfoType.Exp;- 변수 타입은 InfoType 타입이며, 오직 Exp, Level, Kill, Time, Health 중 하나만 가질 수 있다.- 내부적으로는 정수값으로 저장된다. Exp → 0Level → 1Kill → 2Time → 3Health → 4- 열거형은 기본적으로 첫 번째 항목이 0, 그다음부터 1, 2, 3 순으로 자동 할당된다. public enum InfoType { Exp = 10,.. 2025. 3. 18.
범위 감지(Scanner) / 무기(Weapon)와 총알(Bullet) Scanner.cs플레이어 주변의 목표(적, 아이템 등)를 탐색하는 스크립트로, 가장 가까운 적을 찾아 자동 조준하는 역할을 한다.using System.Collections;using System.Collections.Generic;using UnityEngine;public class Scanner : MonoBehaviour{ public float scanRange; // 스캔 반경(범위) public LayerMask targetLayer; // 스캔 대상 레이어(감지 대상이 속한) public RaycastHit2D[] targets; // 스캔 결과 리스트(감지된 적들을 저장할 배열) public Transform nearstTarget; // 가장 가까운 대상(적) .. 2025. 3. 18.
배열과 리스트의 차이 / 오브젝트 풀링(Object Pooling) 배열(Array)과 리스트(List)배열(Array)과 List(제네릭 리스트)는 여러 개의 데이터를 저장하는 방법이지만, 크기 조절, 사용 편의성, 성능 최적화 면에서 차이가 있다.배열배열은 고정된 크기의 데이터 저장소로, 빠른 데이터 접근이 가능하지만 크기 조절이 불가능하다. 특징int[] numbers = new int[5]; // 크기가 5인 배열 선언numbers[0] = 10;numbers[1] = 20;numbers[2] = 30;Debug.Log(numbers[0]); // 10 출력- 한 번 크기를 정하면 변경할 수 없음 (new int[5] → 항상 5개까지만 저장 가능)- 빠른 데이터 접근이 가능 (numbers[0] → 즉시 가져올 수 있음)- 크기 변경이 필요하면 새로운 배열을 만.. 2025. 3. 17.
코루틴(Corutine) / 적 생성(Enemy, Spawn) CorutineIEnumerator는 **코루틴 전용 반환형(인터페이스)**이다.코루틴은 일반 함수와 다르게, 실행 도중 yield return을 만나면 일시 중지되었다가 나중에 다시 실행된다.이 방식 덕분에 시간이 걸리는(프레임을 기다리는) 동작을 자연스럽게 구현 가능하다. IEnumerator Example(){ Debug.Log("코루틴 시작"); yield return new WaitForSeconds(2f); // 2초 기다림 Debug.Log("2초 후 실행");}위 예제를 실행하면 즉시 첫 번째 로그를 출력하고, 2초 후 두 번째 로그를 출력한다. yield return null;위 코드를 만나면 한 프레임 동안 대기한 후 다음 코드가 실행된다.이번 스크립트에선 넉백 함수에 .. 2025. 3. 13.
유니티(Unity)의 주요 이벤트 함수(Event Functions) 이벤트 함수란?특정 조건에서 자동으로 호출되는 함수들로, 주로 생명주기(Lifecycle), 충돌(Physics), UI, 입력(Input), 씬(Scene) 관리와 관련이 있다. 1. 생명주기(Lifecycle) 관련게임 오브젝트의 생성, 활성화, 업데이트, 비활성화, 삭제 등의 흐름을 관리하는 함수함수명설명Awake()- 오브젝트가 생성될 때 한 번만 호출됨 (Start보다 먼저 실행)Start()- 오브젝트가 씬에서 활성화될 때 한 번만 실행됨 (Awake 이후 실행)Update()- 매 프레임마다 실행됨. (게임 로직, 애니메이션, 입력 처리 등)LateUpdate()Update 이후 실행됨. (카메라 움직임 같은 후처리에 주로 사용)FixedUpdate()물리 엔진 관련 업데이트 (물리 연산을 .. 2025. 3. 12.