Legacy Of Auras 코드 문서

체계적이고 직관적인 코드 구조 분석과 구현 가이드

0 스크립트 파일
0 주요 기능
0 API 레퍼런스

특정 기능 구현 방법

주요 게임플레이 기능들의 구현 방식과 코드 구조를 상세히 설명합니다

코드베이스 구조

프로젝트의 모든 코드 파일과 각각의 기능을 체계적으로 정리했습니다

시스템 아키텍처

Legacy of Auras 프로젝트 4계층 아키텍처

UI Layer

Quest Manager
Player HP Bar
Inventory System
Item Shop
Mini Map
CrossHair
Alert System
Loading Screen

Gameplay Layer

Game Manager
Player Controller
Monster AI
Boss System
Combat System
Level & EXP
Quest System
Weapon System

Data & Persistence Layer

Save System
Login System
Player State
Monster State
Quest Data
MySQL Database

Core & Utility Layer

Fade Effects
Sound Manager
Environment Interaction
Visual Effects
Type Story
C++ DLL Interface

API 레퍼런스

주요 클래스와 메서드의 상세한 API 문서

WeaponType

enum

게임에서 사용할 수 있는 무기 타입을 정의하는 열거형. 다양한 무기와 아이템을 포함합니다.

속성

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;
}

GameManager

class

게임의 전반적인 상태를 관리하는 싱글톤 클래스. 씬 전환, 플레이어 설정, 전역 게임 상태를 담당합니다.

메서드

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;

PlayerMove

class

플레이어의 이동, 점프, 중력을 관리하는 클래스. 캐릭터 컨트롤러와 애니메이션을 통합 관리합니다.

메서드

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;

PlayerAttack

class

플레이어의 공격 시스템을 관리하는 클래스. 다양한 무기 타입과 타겟 시스템을 지원합니다.

메서드

Transform FindClosestMonster()

가장 가까운 몬스터를 찾아 타겟으로 설정합니다.

예제:
Transform target = playerAttack.FindClosestMonster();

속성

targetMonster (Transform)

현재 타겟으로 설정된 몬스터 (static)

weaponType (WeaponType)

현재 장착된 무기의 타입

사용 예제

// 타겟 몬스터 확인
if (PlayerAttack.targetMonster != null) {
    // 공격 실행
}
// 무기 타입 확인
if (playerAttack.weaponType == WeaponType.BOW) {
    // 활 공격 로직
}

PlayerWeaponChanger

class

플레이어의 무기 전환을 관리하는 클래스. 다양한 무기 간의 동적 전환을 지원합니다.

메서드

void EquidUnEquidBow()

활을 장착하거나 해제합니다.

예제:
weaponChanger.EquidUnEquidBow();
void EquidUnEquidGun()

총을 장착하거나 해제합니다.

예제:
weaponChanger.EquidUnEquidGun();
void ChangeAurasArrow()

마법 화살로 전환하거나 해제합니다.

예제:
weaponChanger.ChangeAurasArrow();

사용 예제

// 무기 전환 예제
weaponChanger.EquidUnEquidBow();
weaponChanger.EquidUnEquidGun();

MonsterControl

class

몬스터의 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());

ItemShop

class

아이템 상점 시스템을 관리하는 클래스. 아이템 구매, 선택, 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];

PlayerState

class

플레이어의 상태 정보를 저장하는 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);

QuestManager

class

퀘스트 UI의 표시/숨김을 관리하는 클래스. 퀘스트 창 토글과 커서 제어를 담당합니다.

메서드

void TurnOnOffQusetUI()

퀘스트 UI의 표시 상태를 전환합니다.

예제:
questManager.TurnOnOffQusetUI();

속성

isQuestUIOn (bool)

퀘스트 UI가 현재 표시되고 있는지 여부 (static)

사용 예제

// 퀘스트 UI 토글
questManager.TurnOnOffQusetUI();
// UI 상태 확인
if (QuestManager.isQuestUIOn) {
    // 퀘스트 UI가 열려있음
}

QuestTitleContent

class

개별 퀘스트의 정보를 저장하는 데이터 클래스. 제목, 내용, 보상 등의 퀘스트 데이터를 포함합니다.

속성

questTitle (string)

퀘스트의 제목

questContent (string)

퀘스트의 상세 내용

rewardCost (int)

퀘스트 완료 시 받는 금전 보상

rewardExp (int)

퀘스트 완료 시 받는 경험치 보상

clearCondition (int)

퀘스트 클리어 조건 (최소 달성 수치)

사용 예제

// 퀘스트 데이터 생성
QuestTitleContent quest = new QuestTitleContent();
quest.questTitle = "몬스터 처치";
quest.rewardExp = 100;
// 퀘스트 정보 확인
if (killCount >= quest.clearCondition) {
    // 퀘스트 완료
}

코드 뷰어