본문 바로가기

Unity/Undead Survivor10

싱글톤 패턴(Singleton Pattern) / 게임 매니저(Game Manager) / 오디오 매니저(Audio Manager) Singleton Pattern싱글톤 패턴은 게임에서 "하나만 존재해야 하는 객체"를 만들 때 사용하는 디자인 패턴이다.예를 들어, GameManager(게임 전체 관리), AudioManager(배경음, 효과음 관리), UIManager(UI 관리) 이런 것들은 굳이 여러 개 만들 필요가 없고 어디서든 쉽게 접근할 수 있어야 한다.그래서 싱글톤 패턴을 사용하면 딱 하나만 존재하도록 강제할 수 있다. 기본 패턴 코드public class GameManager : MonoBehaviour{ public static GameManager instance; // 자기 자신을 저장할 변수 (정적 변수) void Awake() { if (instance == null) // 처음 실.. 2025. 3. 19.
로컬 저장소(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.