체계적이고 직관적인 코드 구조 분석과 구현 가이드
주요 게임플레이 기능들의 구현 방식과 코드 구조를 상세히 설명합니다
프로젝트의 모든 코드 파일과 각각의 기능을 체계적으로 정리했습니다
Legacy of Auras 프로젝트 4계층 아키텍처
주요 클래스와 메서드의 상세한 API 문서
게임에서 사용할 수 있는 무기 타입을 정의하는 열거형. 다양한 무기와 아이템을 포함합니다.
NULL (WeaponType)
[읽기 전용]
무기 없음
BOW (WeaponType)
[읽기 전용]
활 무기
GUN (WeaponType)
[읽기 전용]
총 무기
AURAS (WeaponType)
[읽기 전용]
마법 화살 (아우라스)
ITEM1 (WeaponType)
[읽기 전용]
아이템 슬롯 1
ITEM2 (WeaponType)
[읽기 전용]
아이템 슬롯 2
ITEM3 (WeaponType)
[읽기 전용]
아이템 슬롯 3
ITEM4 (WeaponType)
[읽기 전용]
아이템 슬롯 4
ITEM5 (WeaponType)
[읽기 전용]
아이템 슬롯 5
// 무기 타입 사용
WeaponType currentWeapon = WeaponType.BOW;
// switch문에서 사용
switch (weaponType) {
case WeaponType.BOW:
FireArrow();
break;
case WeaponType.GUN:
FireBullet();
break;
case WeaponType.AURAS:
FireMagicArrow();
break;
}
게임의 전반적인 상태를 관리하는 싱글톤 클래스. 씬 전환, 플레이어 설정, 전역 게임 상태를 담당합니다.
void Awake()
싱글톤 패턴을 초기화하고 게임 시작 시 필요한 설정을 진행합니다.
// Unity에서 자동 호출됨
// GameManager.info를 통해 접근
void LevelOnLoad(Scene scene, LoadSceneMode mode)
씬 전환 시 호출되어 플레이어 위치와 상태를 관리합니다.
scene
(Scene)
*
- 로드된 씬 정보
mode
(LoadSceneMode)
*
- 씬 로드 모드
// Unity SceneManager에 의해 자동 호출
info (GameManager)
[읽기 전용]
GameManager의 싱글톤 인스턴스
mouseSensitivityX (float)
마우스 X축 감도 설정
mouseSensitivityY (float)
마우스 Y축 감도 설정
musicVolume (float)
배경음악 볼륨 설정
soundVolume (float)
효과음 볼륨 설정
playerState (PlayerState)
플레이어의 상태 정보
// 게임 매니저 접근
GameManager gameManager = GameManager.info;
// 마우스 감도 설정
GameManager.info.mouseSensitivityX = 2.5f;
플레이어의 이동, 점프, 중력을 관리하는 클래스. 캐릭터 컨트롤러와 애니메이션을 통합 관리합니다.
void Jump()
플레이어 점프를 실행하고 점프 애니메이션을 재생합니다.
playerMove.Jump();
void Move()
플레이어를 지정된 방향으로 이동시킵니다.
// Update()에서 자동으로 입력을 처리하여 이동
void SetGravity()
중력을 적용하여 플레이어를 아래로 이동시킵니다.
// Update()에서 자동으로 중력 적용
bool CheckIsGround()
플레이어가 땅에 닿아있는지 확인합니다.
if (playerMove.CheckIsGround()) {
// 점프 가능
}
defaultSpeed (float)
플레이어의 기본 이동 속도
runMulti (float)
달리기 시 적용되는 속도 배수
jumpPower (float)
점프 시 적용되는 힘의 크기 (기본값: 10f)
// 이동 속도 설정
playerMove.defaultSpeed = 5.0f;
playerMove.runMulti = 2.0f;
// 점프 파워 조정
playerMove.jumpPower = 15.0f;
플레이어의 공격 시스템을 관리하는 클래스. 다양한 무기 타입과 타겟 시스템을 지원합니다.
Transform FindClosestMonster()
가장 가까운 몬스터를 찾아 타겟으로 설정합니다.
Transform target = playerAttack.FindClosestMonster();
targetMonster (Transform)
현재 타겟으로 설정된 몬스터 (static)
weaponType (WeaponType)
현재 장착된 무기의 타입
// 타겟 몬스터 확인
if (PlayerAttack.targetMonster != null) {
// 공격 실행
}
// 무기 타입 확인
if (playerAttack.weaponType == WeaponType.BOW) {
// 활 공격 로직
}
플레이어의 무기 전환을 관리하는 클래스. 다양한 무기 간의 동적 전환을 지원합니다.
void EquidUnEquidBow()
활을 장착하거나 해제합니다.
weaponChanger.EquidUnEquidBow();
void EquidUnEquidGun()
총을 장착하거나 해제합니다.
weaponChanger.EquidUnEquidGun();
void ChangeAurasArrow()
마법 화살로 전환하거나 해제합니다.
weaponChanger.ChangeAurasArrow();
// 무기 전환 예제
weaponChanger.EquidUnEquidBow();
weaponChanger.EquidUnEquidGun();
몬스터의 AI 행동을 관리하는 클래스. 플레이어 추적, 공격, 대기 상태를 포함합니다.
IEnumerator AttackCoroutine()
몬스터의 공격 패턴을 관리하는 코루틴입니다.
StartCoroutine(AttackCoroutine());
IEnumerator IdleRotationCoroutine(bool isHit)
몬스터의 대기 상태에서 회전 행동을 관리하는 코루틴입니다.
isHit
(bool)
- 몬스터가 공격받았는지 여부 (기본값: false)
StartCoroutine(IdleRotationCoroutine(true));
lookAtDis (float)
플레이어를 감지하는 거리
maxAngle (float)
플레이어를 인식하는 최대 각도
attackDistance (float)
공격 가능한 거리
moveSpeed (float)
몬스터의 이동 속도
rotationSpeed (float)
몬스터의 회전 속도
// 몬스터 AI 설정
monsterControl.lookAtDis = 10.0f;
monsterControl.attackDistance = 2.0f;
// 공격 코루틴 시작
StartCoroutine(monsterControl.AttackCoroutine());
아이템 상점 시스템을 관리하는 클래스. 아이템 구매, 선택, UI 관리를 담당합니다.
void ChangeSelected(int index)
선택된 아이템을 변경합니다.
index
(int)
*
- 선택할 아이템의 인덱스
itemShop.ChangeSelected(2);
void BuyItem()
현재 선택된 아이템을 구매합니다.
itemShop.BuyItem();
playerState (PlayerState)
플레이어의 상태 정보 참조
costs (List<int>)
각 아이템의 가격 목록
// 아이템 선택 및 구매
itemShop.ChangeSelected(0);
itemShop.BuyItem();
// 아이템 가격 확인
int price = itemShop.costs[index];
플레이어의 상태 정보를 저장하는 ScriptableObject 클래스. 레벨, 체력, 돈, 경험치 등을 관리합니다.
void Add(PlayerState otherState)
다른 PlayerState의 값을 현재 상태에 추가합니다.
otherState
(PlayerState)
*
- 추가할 플레이어 상태
playerState.Add(bonusState);
T ConvertPersent(T value, T left)
퍼센트 기반 값 변환을 수행합니다.
value
(T)
*
- 변환할 값
left
(T)
*
- 기준 값
int result = playerState.ConvertPersent(health, maxHealth);
Level (int)
플레이어의 현재 레벨
HP (int)
플레이어의 현재 체력
money (int)
플레이어가 보유한 돈
exp (int)
플레이어의 경험치
bulletCount (int)
보유한 총알 수
playTotalTime (float)
총 플레이 시간 (초)
kills (int)
처치한 몬스터 수
// 플레이어 상태 수정
playerState.HP += 50;
playerState.money -= 100;
// 상태 합산
PlayerState bonus = CreateInstance<PlayerState>();
bonus.exp = 100;
playerState.Add(bonus);
퀘스트 UI의 표시/숨김을 관리하는 클래스. 퀘스트 창 토글과 커서 제어를 담당합니다.
void TurnOnOffQusetUI()
퀘스트 UI의 표시 상태를 전환합니다.
questManager.TurnOnOffQusetUI();
isQuestUIOn (bool)
퀘스트 UI가 현재 표시되고 있는지 여부 (static)
// 퀘스트 UI 토글
questManager.TurnOnOffQusetUI();
// UI 상태 확인
if (QuestManager.isQuestUIOn) {
// 퀘스트 UI가 열려있음
}
개별 퀘스트의 정보를 저장하는 데이터 클래스. 제목, 내용, 보상 등의 퀘스트 데이터를 포함합니다.
questTitle (string)
퀘스트의 제목
questContent (string)
퀘스트의 상세 내용
rewardCost (int)
퀘스트 완료 시 받는 금전 보상
rewardExp (int)
퀘스트 완료 시 받는 경험치 보상
clearCondition (int)
퀘스트 클리어 조건 (최소 달성 수치)
// 퀘스트 데이터 생성
QuestTitleContent quest = new QuestTitleContent();
quest.questTitle = "몬스터 처치";
quest.rewardExp = 100;
// 퀘스트 정보 확인
if (killCount >= quest.clearCondition) {
// 퀘스트 완료
}