2025/06 10

[6/23] 씬 이동 구조 설계 및 뒤로가기 시스템 구현

🎮 오늘 한 일1. 씬 이동 구조 설계 및 뒤로가기 시스템 구현SceneManagerEx 클래스 제작싱글톤 패턴 적용 및 DontDestroyOnLoad()로 영구 유지씬 이동 시 현재 씬을 스택에 저장하고, LoadPreviousScene()으로 이전 씬 복귀LobbyUI, DungeonSelectUI 스크립트 생성하여 버튼 이벤트와 연결AddListener(SceneManagerEx.Instance.LoadScene) 방식으로 코드 연결하지만 매개변수를 받는 함수라면 AddListener(() => SceneManagerEx.Instance.LoadScene(매개변수)) 이렇게 코드를 수정해야 함.()가 써있으면 코드를 바로 실행하기 때문에 () => 를 붙여야지 버튼을 눌렀을 때만 실행이 됨.2..

TIL 2025.06.23

[6/18] 버튼을 꾹 누를 시 자동으로 업그레이드 되는 기능 구현

핵심 구현1. IPointerDownHandler / IPointerUpHandler 사용Unity의 기본 Button에는 꾹 누름을 감지하는 기능이 없기 때문에, IPointerDownHandler와 IPointerUpHandler 인터페이스를 사용해 마우스 누름과 뗌을 직접 감지함.2. 코루틴 구조OnPointerDown() → StartCoroutine(StartAfterDelay());OnPointerUp() → 모든 코루틴 정지 StartAfterDelay()는 일정 시간 (holdDelay)을 기다린 뒤 RepeatUpgrade()를 실행RepeatUpgrade()는 repeatInterval 간격으로 업그레이드 실행3. 업그레이드 방식UpgradeType enum을 통해 어떤 업그레이드 버튼..

TIL 2025.06.20

[6/17] 자동 공격 기능 개선 및 업그레이드 시스템 연동

🎮 오늘 한 일자동 공격 시스템 개선AutoAttackRoutine() 루프에서 FinalStats.AutoAttackSpeed 값을 사용하도록 변경StatsCalculator.CalculateFinalStats()에서 자동 공격 속도 계산 추가업그레이드로 증가한 BonusAutoAttackSpeed를 기반으로 계산BaseAutoAttackSpeed는 0에서 시작값이 0이면 공격하지 않고, 0보다 크면 1f / 초당 공격횟수로 딜레이 조절WaitForSeconds(autoAttackSpeed) → WaitForSeconds(1f / autoAttackSpeed)로 수정하여 속도에 따라 자동 공격 주기 조절자동 공격 속도가 0일 경우 공격하지 않고 0.2초 간격으로 대기하도록 처리StatsCalculat..

TIL 2025.06.20

[6/16] 업그레이드 시스템 기능 구현 및 실제 능력치 반영 연결

🎮 오늘 한 일업그레이드 시스템 구현 마무리PlayerUpgradeManager.cs업그레이드 실행 시 PlayerData의 스탯에 실제 반영되도록 연결BonusCritDamage, BonusGold, BonusAutoAttackSpeed 값 변경부족한 포인트/골드에 대한 UI 알림 처리 (BtnClick 호출)PlayerData.cs기본 스탯 및 보너스 스탯 분리크리티컬 확률 / 데미지 / 골드 / 자동 공격 속도BaseCritChance, BaseCritDamage 값을 퍼센트 단위 (50f, 150f)로 관리하고,StatsCalculator에서 / 100f 처리StatsCalculator.cs최종 스탯 계산 시 다음과 같은 제약 추가:자동 공격 속도: 최소 0.3초 이상 (너무 빠르게 공격하는 것..

TIL 2025.06.20

[6/13] 2D 클리커 게임 업그레이드 시 포인트를 사용하도록 적용하기

🎮 오늘 한 일PlayerUpgradeManager 기능 고도화능력치 업그레이드 시 포인트(Point)를 사용하도록 적용Critical Multiplier / Auto Attack Speed / Gold Multiplier 업그레이드 기능 구현최대 레벨 도달 시 Max UI 표시 및 Cost Text 업데이트 처리포인트 부족 시 알림 팝업 연동BtnClick.cs에 ShowNotEnoughPointPopup() 메서드 구현PlayerUpgradeManager 에서 BtnClick 통해 부족 알림 호출 적용BtnClick.cs Singleton 적용 시 문제 발생 → Singleton 제거 후 Inspector 직접 연결 방식으로 변경BtnClick.cs 메서드 구조 정리기존 ShowNotEnoughGo..

TIL 2025.06.20

2D 클리커 게임 업그레이드 시스템 기본 구현

🎮 오늘 한 일업그레이드 시스템 기본 구조 설계 및 구현 진행UpgradeLevelData.cs 작성업그레이드 단계별 데이터 클래스 정의 (level / value / cost)UpgradeDataSO.cs 작성업그레이드 테이블 ScriptableObject 작성 (upgradeName / levelDataList)업그레이드 데이터 에셋 3종 생성 및 데이터 입력치명타 배율 업그레이드자동 공격 속도 업그레이드골드 획득 배율 업그레이드PlayerUpgradeManager.cs 기본 구조 작성UpgradeDataSO 참조 변수 선언현재 레벨 변수 선언플레이어 골드 테스트 변수 추가UpgradeCriticalMultiplier() 함수 구현최대 레벨 체크 처리골드 확인 및 차감 처리레벨 증가 처리🧠 배운 ..

TIL 2025.06.12

ATM 로그인 및 회원가입 기능 구현

🎮 오늘 한 일로그인 UI (PopupLogin) 제작ID / Password 입력 필드 추가비밀번호 입력 시 *** 표시 처리회원가입 UI (PopupSignUp) 제작ID / Name / Password / Password Confirm 입력 필드 추가빈 칸 체크 / Password 일치 여부 체크 후 에러 처리 기능 추가회원가입 시 Json 파일로 ID 기반 유저 데이터 저장 구현로그인 기능 구현로그인 시 입력한 ID 기반 Json 파일 존재 여부 확인존재 시 UserData 로 파싱 후 비밀번호 일치 여부 확인로그인 성공 시 PopupBank UI 오픈 및 RefreshUI() 호출에러 처리 통합PopupError 를 싱글톤으로 구성 → 다양한 상황에서 재사용🧠 배운 점UI 흐름 관리 (팝업 ..

TIL 2025.06.12

ATM 유저 데이터(Json) 저장 및 불러오기 기능 구현

🎮 오늘 한 일유저 데이터(Json) 저장 및 불러오기 기능 구현GameManager 에 SaveUserData() 와 LoadUserData() 메서드 제작JsonUtility 와 System.IO 를 사용해 유저 데이터를 Json 파일로 직렬화 및 저장게임 시작 시 Json에서 데이터 로드 → UI에 반영금액 변동 시 자동 저장 기능 구현입금, 출금 기능 수행 후 자동으로 SaveUserData() 호출하여 최신 상태 저장UI 반영 기능 구현데이터 로드 시 PopupBank.RefreshUI() 호출로 UI 갱신 처리🧠 배운 점JsonUtility 를 활용한 객체 직렬화 / 역직렬화 개념파일 경로 관리 및 IO 예외 처리 필요성게임 내에서 데이터 영속성을 구현하는 방법

TIL 2025.06.12

ATM 입출금 기능 전체 구현 및 입력 처리 완성

✅ 작업한 내용입금 UI 구성 (STEP 5)Deposit 오브젝트 구성Vertical Layout Group + Content Size Fitter로 버튼 정렬10,000 / 30,000 / 50,000 버튼 + 직접 입력 InputField + 뒤로 가기 버튼 구성출금 UI 구성 (STEP 6)Withdraw 오브젝트 구성입금 UI와 동일한 구조로 출금 화면 구성UI 전환 기능 구현 (STEP 7)PopupBank.cs에 ShowATM(), ShowDeposit(), ShowWithdraw() 함수 작성버튼 이벤트에 OnClick()으로 연결Start()에서 ShowATM() 호출로 기본화면 설정버튼을 통한 입금 기능 구현 (STEP 8)Deposit(int amount) 메서드에서 금액 계산 및 U..

TIL 2025.06.05

ATM 시스템 UI 구성 및 데이터 연동 구현

✅ 작업한 내용기본 UI 구현 (STEP 1)Sparta Bank, ATM, 현금, 잔액, 입출금 버튼 배치현금: 기본 100,000원 / 잔액: 기본 50,000원string.Format("{0:#,0}") 사용해 금액 3자리마다 쉼표 표시 처리UserData 클래스 작성 (STEP 2)이름, 현금, 잔액 필드 보유MonoBehaviour로 작성해 빈 오브젝트에 붙여 Inspector에서 설정 가능하도록 구성GameManager 제작 및 싱글톤 패턴 적용 (STEP 3)public static GameManager Instance 구조로 싱글톤 패턴 구현[System.Serializable] 사용하여 UserData 클래스 인스펙터에서 표시되도록 설정생성자 이용한 초기화 시도 → Inspector에서 ..

TIL 2025.06.05