DevCamp 회고 - 15 (정리)

이준호·2024년 7월 14일
0

📌 DevCamp 회고



📌 Done - 24.05.16 (Check List)

  • BM 추가
    • 패키지 추가
    • 다이아 번들 추가
    • 마일리지 상점 추가
    • 구매 횟수 제한 설정
    • 구매 횟수 도달시 버튼 비활성화 및 구매완료 백그라운드 추가.
  • 동료 펫 공격력 재확인
    • 토스트 메세지 자동장착은 통합으로 1번만 뜨도록
    • 자동장착이 될 애들이 없으면 뜨지 않아야하는데 뜨는중 (현재 펫 공격력만 더해서 올려주는게 아니라 총합 전투력을 중첩해서 더해주고 있는듯함 확인 필요.)











📌 Organize

➔ 2024.05.16 (목)

(인앱결제 상품 추가 -> 패키지 : 스타트팩, 무제한 버프팩, 스페셜팩 / 다이아 : 1 ~ 4 다이아 재화 패키지 / 마일리지 : 각 던전 입장권 상품, 인앱 결제 상품 횟수제한 로직 적용, 인앱 결제 횟수 제한상품 구매시 구매완료 백그라운드 추가, 펫 공격력 스탯 중첩 버그 수정)

IAP Shop Reward Panel

  • 인앱 결제 상품을 구매하면 무었을 구매했는지 보여주는 리워드 창 추가.



IAP Start Package Add

  • 인앱결제 상품 스타트팩 구성 추가.

  • ShopManager.cs

    • GiveRewards 메서드 -> 기존 AutoSpecialSkill 케이스 를 ColleagueItem 으로 교체 후 아이템 추가 로직 추가.
  • ProductReward.cs

    • rewardItemIndex (int) -> 동료 아이템 추가를 위해 Index 입력을 통해 아이템 지급을 위해 추가.
  • UIRewardElement.cs

    • ShowUI 메서드 -> ColleagueItem 케이스에서 Index 를 계산식을 통해 몇 번째인지 바꿔서 스프라이트를 가져와 아이콘에 대입.
  • UISummonPanel.cs

    • OpenTap 메서드 -> 소환을 제외한 패키지, 다이아, 마일리지 케이스 로직 변경. 해당 케이스 Info를 돌며 .Get 하여 정보를 담아서 .ShowUI 메서드로 띄어준다.
    • poolClear 메서드 -> 각 Pool들을 Clear 해주는 메서드.
  • Defines.cs

    • EShopRewardType (Enum) -> ECurrencyType 과 순서를 맞춰줌. (맞춰주지 않으면 아이콘 스프라이트가 다른 것으로 바뀐다.)
  • ColleagueInventoryManager.cs

    • ShopItemRewardGenerator 메서드 -> 파라미터로 아이템의 Index와 NickName을 받아서 해당 인자를 InAppPaymenetRewardItem 메서드에 넣어 아이템을 생성하여 rewardItem 변수에 담아 인벤토리에 추가하고 UI를 업데이트 하고 저장을 한다.
  • ColleagueItemGenerator.cs

    • InAppPaymentRewardItem 메서드 -> 파라미터로 받는 정보들(아이템 데이터, 인덱스, 닉네임)을 필요에 따라 변환시켜 아이템에 각 정보를 대입시켜준다. (이름, 스프라이트, 능력치 등등) 그 후 스탯을 올려주고 토스트 메세지와 레드닷 등 처리 후 정보가 대입된 아이템을 return 해준다.



IAP Buff Unlimited Package Add

  • 인앱결제 상품 무제한 버프 패키지 추가.

  • ShopManager.cs

    • GiveRewards 메서드 -> AutoBuff 케이스 보상 지급 로직 추가.
  • BuffSlot.cs

    • isAutoBuff / IsAutoBuff (bool)(Property) 추가.
    • Initialize 메서드 -> 파라미터에 bool값 변수 추가 후 isAutoBuff 를 파라미터로 받은 bool값을 넣어 오토버프 상태를 초기화해준다.
    • SetAutoBuff 메서드 -> 자동 버프 구매시 UI_Buff 에서 호출하는 메서드. 구매 이후에는 Initialize 부분에서 로드할 때 자동 초기화 된다.
    • isAutoBuff가 true라면 해당 변수에 할당해주고 기존 이벤트 취소한 후 경험치만 반복해서 오르는 이벤트 할당, 꺼져있는 경우 AssignBuff 실행.
    • LoadBuffState 메서드 -> 자동 버프가 활성화 라면 바로 return 한다.
  • BuffUI.cs

    • UpdateUI / EnableUI 메서드 -> IsAutoBuff 상테에 따라 남은 시간 텍스트를 바꿔준다.
  • UI_Buff.cs // TODO Save/Load 트러블 슈팅 @@@@

    • Initialize 메서드 -> isAutoBuff 에 로드를 해준다.
    • SetAutoBuff 메서드 -> 상점에서 구매하면 불리는 메서드로, isAutoBuff 를 true 로 할당해주고 Save를 한 뒤에 buffSlots를 돌면서 slot의 SetAutoBuff 메서드를 통해 적용시켜준다.

/ TroubleShooting /

Save를 진행할 때, 문자열 보간을 사용하여 변수를 {} 안에 넣어 사용했는데, 그 변수가 bool값 변수여서 Save할 때는 true로 저장이 되지만 Load할 때는 기본값이 false이기 때문에 false로 된 이름을 찾지만 존재하지 않아서 기본값인 false로 초기화 할당이 진행되었던 것이다.
변환이 있는 값같은 경우는 변수를 직접적으로 넣기 보다는 고정값으로 넣어야 한다. 그리하여 그냥 string으로 변경하여 넣었다.
isAutoBuff 같은 경우는 여러 변수 저장에 대응하는 것이 아니고 하나만 존재하며 관리되기에 그냥 string값으로 저장하여 정상작동 되었다.
Save/Load 할 때는 항상 저장 값과 불러오는 값의 이름에 변동이 있는지 유의하며 써야한다.




IAP Special Package Add

  • 인앱결제 상품 스페셜팩 추가.

  • ShopManager.cs

      • GiveRewards 메서드 -> Skill 케이스에 로직 추가.
        SkillManager 에 접근하여 스킬 이름으로 스킬 정보를 할당 받고, 그 해당 스킬의 갯수를 RewardAmount 만큼 올려준 뒤, 처음 갱신되는 스킬이라면 isOwned 를 true로 해주고 저장한뒤 갯수도 저장한다.
  • UIRewardElement.cs

    • ShowUI 메서드 -> Skill 케이스 추가. SkillManager 의 GetIcon 메서드를 통해 스킬 아이콘 인덱스를 파라미터로 보내 스프라이트를 받아 적용한다.



IAP Dia Package Add

  • 인앱결제 상품 다이아 패키지 1 ~ 4 추가.



Mileage Shop Product Add

  • 마일리지 상점 및 마일리지 재화로 구매 가능 상품 추가.

  • UISummonPanel.cs

    • 기존 mileage 셋팅들을 UIPackageIcon 타입이 아닌 UIProductIcon 타입으로 변경.
    • UIPackageIcon -> 여러 상품이 묶인 패키지
    • UIProductIcon -> 한 가지/개의 상품만 있는 상품



IAP Package Quantity Limited

  • 패키지 갯수 제한 텍스트 표시

  • ProductInfo.cs

    • IsQuantityLimited, QuantityString 프로퍼티 -> 갯수 제한 여부 체크 bool값, 갯수 제한 텍스트
  • UIPackageIcon.cs

    • UpdateUI 메서드 -> Info의 IsQuantityLimited 를 검사하여 true 라면, 수량 텍스트 설정.



IAP Package Quantity Limit Logic Apply

  • 인앱결제 횟수 제한 상품에 횟수 제한 도달시 버튼 비활성화 로직 적용.

  • ShopManager.cs

    • isPaymentSuccess/IsPaymentSuccess (bool) 변수/프로퍼티 -> 결제가 성공해서 리워드 보상을 받았는지 체크하는 변수
    • GivePurchaseReward 메서드 -> 결제가 성공하면 호출되는 메서드로 이 부분에서 IsPaymentSuccess 를 true로 할당한다.
  • ProductInfo.cs
    quantityLimitedCount/QuantityLimitedCount (int) 변수/프로퍼티 -> 상품의 초기 구매 횟수 제한을 설정

  • UIPackageIcon.cs

    - QuantityLimitedCount (int) 변수 -> 해당 패키지 상품의 남은 횟수 제한을 담는 변수.
    
    - limitedPayment (bool) 변수 -> 해당 상품이 구매가 가능한지 판별하는 변수.
    
    - InitalizeUI 메서드 -> 초기화를 진행할 때, QuantityLimitedCount에 info의 QuantityLimitedCount를 할당해준다.

    그 후 Load 메서드를 불러 정보를 불러온다.

    - InitalizeBtn 메서드 -> buyButton 에 IsQuantityLimitedCheck 메서드를 연결해준다.
    
    - IsQuantityLimitedCheck 메서드 -> 상품의 갯수 제한이 있는 상품인지 검사하고 맞다면 횟수를 하나 빼주고, 결제가 됏는지 & 리미트카운트가 0보다 작거나같은지 체크하고 맞다면 버튼을 꺼주고, 결제 확인 상태를 초기화한뒤 limitedPayment 에 true를 할당하고 Save를 해준다.
    
    - Save/Load 메서드 -> QuantityLimitedCount(남은 구매 횟수), limitedPayment(구매 가능 여부) 를 저장 및 로드하는 메서드.



IAP Quantity Limitied Background

  • 인앱결제 수량제한 상품 구매시 구매완료 백그라운드 표시 추가.

  • UIPackageIcon.cs

    • quantityLimitiedBackground -> 구매 완료시 UI 가장 앞에 켜지는 구매완료 백그라운드.
    • IsQuantityLimitedCheck, UpdateUI 메서드 -> 수량제한에 도달했는지 체크하는 조건문에 들어오면 백그라운드를 켜준다.
  • UnityServicesInitializer.cs

    	- 인앱결제 초기화 클래스.



Colleague Pet Attack Stat Equip Nesting

  • 펫 장착시 펫 공격력이 중첩이 되던 버그

  • ColleagueManager.cs

    • PetAttackPower 프로퍼티 -> petAttackPower += value 로 값을 더헤주고 있었는데 새로운 펫 장착시 이전 펫 공격력을 뺴줘야하는데 setter에서 제대로 작동하지 못했던 것.
      petAttackPower = value 로 값을 직접 대입하여 문제 해결.
  • UIColleaguePanel.cs

    • AutoEquip 메서드 -> 하단 조건문 중 현재 장착하려는 펫과 장착되어있는 펫이 같은것인지 비교하여 같다면 다음 루프로 넘기도록 continue 추가.
  • UIColleaguePopup.cs

    • EquipItem 메서드 -> 파라미터로 받는 isAutoEquip 체크값을 EquipSettingPet 메서드에 인자로 보내주는 것으로 수정.
      총 전투력 업데이트를 펫 장착쪽에서 하기위해 삭제.
    • EquipSettingPet 메서드 -> 현재 장착중인 펫과 새로 장착하려는 펫이 같은지 비교하여 같다면 바로 return 하도록 수정.
      총 전투력 업데이트 추가.
profile
No Easy Day

0개의 댓글