Skip to content

develop Weapon Accessory Management

pianop edited this page Feb 11, 2023 · 3 revisions

무기, 악세서리를 얻거나 레벨이 올라가는 것을 관리

여기서 말하는 "장비"라 함은 무기와 악세서리를 총칭하는 말입니다.
무기 관련 함수는 Weapon.cs에, 악세서리 관련 함수는 Character.cs에 있습니다.

목차

Summary

  1. 무기의 1레벨 기본 값과 레벨업시 올라가는 스텟, 수치를 전처리로 저장해주기
  2. 장비를 처음 획득할 때 처리할 함수와 이후 업그레이드를 처리해줄 함수를 작성함

levelOneWeaponPreprocessing

image
무기 획득시 적용되는 기본 무기 스탯값들을 전처리하는 함수
defaultWeaponStats[무기 index, 스탯 index] = 기초 스탯 값
Constants.X는 -1f를, Constants.INF는 1e10f를 의미하는 상수.

weaponUpgradePreprocessing

image
무기 종류별로 레벨업함에 따라 올라가는 무기 스텟값을 전처리하는 함수
WeaponUpgrade[무기 index][무기 level(레벨업 후)] = 해당 레벨에 올라가는 List< Tuple<스탯 index, 올라가는 수치>>를 반환, 한 번의 레벨업으로 여러 스탯이 올라가는 장비가 있기에 List를 하나 더 붙여주었음
0레벨은 없고 1레벨에는 업그레이드를 하지 않으므로 더미 값을 넣어주었음

AccessoryUpgradePreprocessing

image
위 함수의 액세서리 버전
위의 weaponUpgrade의 경우와 동일하나 1레벨 때의 기본 값과 업그레이드 시 올라가는 방식이 같아서 Upgrade하나로 처리함. 때문에 1레벨부터 적용되므로 0레벨에만 더미 값을 넣어주었음.

GetWeapon

image
인자로 획득한 무기의 index를 받아서 해당 무기를 Weapons에 추가해줌
획득한 무기의 index가 가지고있는 Weapons(Weapon 리스트)의 몇 번째 index에 있는지를 넣어줌(없는 장비라면 -1가 기본 값) WeaponSetting()은 Weapon이 생성될 때 처리해야 하는 과정을 맡은 함수, 생성자를 사용하지 않은 이유는 유니티는 : MonoBehaviour가 붙은 클래스를 new로 생성하면 안되기에 Player 오브젝트에 Component로 생성된 Weapon을 붙여주고 생성자 역할을 해줄 함수를 따로 만들었음
새로 무기가 추가됨에 따라 뽑기 테이블 수정이 필요해져서 UpdateWeaponPickUpList 함수를 호출함

UpgradeWeapon

image
Weapon 클래스의 Upgrade함수를 호출한다, 마스터했다면 마스터한 무기 리스트에 해당 무기의 index를 추가해주고 무기 뽑기 테이블을 수정한다.

  • image
    무기 레벨을 높여주며 증가하는 스텟들을 적용해주는 함수, 해당 업그레이드로 무기가 최대 레벨에 도달한다면 true를 반환, 아니라면 false 반환.

GetAccessory

image
GetWeapon 의 악세서리 버전

UpgradeAcceesory

image
UpgradeWeapon의 악세서리 버전

Clone this wiki locally