Unity - 사전합반 프로젝트 9

땡구의 개발일지·2025년 6월 30일

Unity마스터

목록 보기
53/78
post-thumbnail

뽑기

뽑기 진행 시 확률 테이블에서 가져와서 아이템을 갯수만큼 생성

세이브 파일 내용 정리

회의를 통해 세이브 파일에 저장될 내용을 정리했다.


  1. 세이브 : 세이브데이터에 넣는 과정 -> 직렬화 리스트 ItemData 리스트 Add
  2. GameManager -> Load
  3. UI에서 표기 -> 게임매니저에서 참조 가져옴
  4. 강화 시도 할 때도 강화 결과 연출 전 저장

캐릭터, 장비 강화 상태
캐릭터 고유(보유갯수 0)


장비(복수) -> 장비 생성 시: csv에서 장비의 데이터를 가져와서(로드). 게임 매니저의 세이브 파일 참조한 다음, 인벤토리 리스트에 추가함. 이후 해당 세이브 데이터를 세이브 매니저를 통해 저장 -> 게임매니저는 로드를 통해 객체 최신화

장비 강화 시 -> 게임매니저에서 참조된 세이브 객체 조작 -> 저장
세이브 파일 객체에서 아이템 ID,인벤토리 ID 필요함. 통해서 접근해가지고 데이터 변경
강화 시 변경되는 수치는 CSV 데이터 테이블에서 가져와야함

캐릭터를 선택해서 인벤 창에 들어갈 시, 해당 캐릭터가 장비 중인 아이템의 ID가 필요하다. 캐릭터 SO에 인벤토리 ID를 저장하는 식으로, 연결한다.

public string name; // 프로필 데이터
public int level = 1; 
public int exp = 0;
public int[] members; // 캐릭터의 고유 ID
public int gold = 0; //
public int maxStage = 1; // 2,2
// CSV에서 전체 캐릭터의 ID
// List로 캐릭터 ID를 만들어서 저장
public struct StageInfo
{
    public int world;
    public int stage;
    public int score;
    public bool unlock;
    public bool isClear;
} 
// 각 캐릭터의 성장상황이나 장비
// 각캐릭터의 레벨, 보유숫자(조각), 장비슬롯의 ID int[배열]
public struct CharacterInfo
{
    public int id;
    public int[] equips; // 장비 인벤토리 ID;
}
// equips 장비 인벤 ID로 캐릭마다 장비한 상황 결정됨
public struct EquipStatus
{
     // 이건 아이템에서 결정됨 : 아이템의 고유 ID, 아이템의 타입
    public int invenId;
    public int level;
}
// 이큅스테이터스 가지고 장비의 강화 상태 결정됨
// 인벤토리에서 아이템 체크 방법 : EquipStatus 배열을 전부 불러온다. 
// UI측에서 체크 방법: Inventory에서 불러오면 됨.

ESC 중복처리 문제

인게임 스테이지에서 ESC를 누르면 팝업 일시정지 메뉴가 나온다. 여기서, ESC를 누르면 다시 팝업이 꺼진다. 이후 다시 ESC를 누르면 StageScene 스크립트의 Update에서 ESC키 입력을 받아 UIManager를 통해 ShowPopUp으로 팝업창이 켜진다. 그 다음 UIManager의 Update를 도는데, 거기서도 ESC 입력을 받아서 팝업 창을 끈다. 즉, 팝업창이 켜지자마자 꺼진다.

Util 클래스에 static bool escPressed 변수와 ESC 블락 함수를 추가한다. 함수로 해당 변수의 값을 관리한다. 스테이지 스크립트에서 ESC를 누르면 true로 바꾸고, UIManager에서는 해당 변수가 true일 경우 끄지 못하게 한다.

LateUpdate()에서 매 프레임마다 Reset함수를 통해 escPressed값을 false로 바꾼다.

profile
개발 박살내자

0개의 댓글