본문 바로가기

Unity/Undead Survivor15

로컬 저장소(PlayerPrefs) / 업적 시스템(Achievement System) PlayerPrefs로컬 저장소 기능으로, SetInt(), SetFloat(), SetString()을 사용해서 숫자, 실수, 문자열 데이터를 저장 가능하다.게임이 꺼져도 데이터가 유지된다. (PlayerPrefs.Save()를 명시적으로 호출하지 않아도 자동 저장됨) 사용 방법PlayerPrefs.SetInt("HighScore", 100);PlayerPrefs.SetString("PlayerName", "Alex");PlayerPrefs.Save(); // 저장 (자동으로 저장되므로 생략 가능)- "HighScore" 키에 100 저장- "PlayerName" 키에 "Alex" 저장 PlayerPrefs에서 데이터 불러오기int score = PlayerPrefs.GetInt("HighScore".. 2025. 3. 19.
레벨업 시스템(LevelUp System) / 손과 무기 장착 표현(Hands) / 캐릭터 선택(Character Select) LevelUp.cs플레이어가 레벨업할 때 실행되는 UI 관리 스크립트로, 레벨업 UI를 표시하고 랜덤한 3개의 아이템을 선택하여 활성화,플레이어가 선택한 아이템을 적용하는 역할을 한다.using System.Collections;using System.Collections.Generic;using UnityEngine;public class LevelUp : MonoBehaviour{ RectTransform rect; // 레벨업 UI의 크기 및 위치 조절 Item[] items; // 레벨업 UI에서 표시할 아이템 목록 void Awake() { rect = GetComponent(); // GetComponentsInChildren(true) = 비활성.. 2025. 3. 19.
스크립터블 오브젝트(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.