TIL 70

[7/8] DOTween 애니메이션 도입

🎮 오늘 한 일팝업에 DOTween으로 애니메이션 도입→ 알파값 페이드 + 팝업 살짝 튀는 스케일 애니메이션 적용→ CanvasGroup 이용해서 부드럽게 나타나고 사라지게 처리기존 MessagePopup에 직접 적용→ 버튼 유무에 따라 노출 분기 처리 그대로 유지→ 애니메이션만 자연스럽게 붙임🧠 배운 점 / 느낀 점CanvasGroup 알파값으로 fade 처리하면 자연스러움→ 단순 SetActive보다 훨씬 좋음cgFade = GetComponent() 로 자동 할당 가능→ 인스펙터에서 비워둬도 문제 없음DOFade() → 알파값 변화, DOScale() → 튀는 느낌 연출→ 팝업 연출은 이 두 개로도 충분함애니메이션이 필요한 UI는 AnimationRect 쪽 활용도 고려 가능→ 현재는 팝업에만 ..

TIL 2025.07.09

[7/7] UI 에셋 리소스 받아서 교체 진행

🎮 오늘 한 일패널이 켜져 있는데 화면에 UI가 보이지 않는 버그 발생→ 프리팹 설정, 컴포넌트 할당, 코드까지 모두 점검했으나→ 원인은 RectTransform 스케일이 (0, 0, 0) 으로 설정돼 있어서였음UI 에셋 리소스 새로 받아서 교체 진행→ 기존 임시 버튼/아이콘과 크기, 비율이 달라 직접 수정 필요동봉된 PSD 파일을 열어서 필요한 요소 직접 수정/추출하여 커스텀 에셋 제작UI 정렬 문제 해결→ 원래는 Top Bar를 가운데 앵커로 두고, 그 안에 좌/우 UI를 배치했으나→ 좌우 비율이 긴 디바이스에서 중앙에 몰림 현상 발생→ 해결: Top Bar 제거하고 좌측 UI는 앵커를 왼쪽 상단, 우측 UI는 오른쪽 상단으로 각각 개별 배치하여 해결🧠 배운 점 / 느낀 점UI가 안 보일 때는 a..

TIL 2025.07.07

[7/4] 게임 MVP 제작을 위해 프로젝트 전체적으로 정리

🎮 오늘 한 일안 쓰는 스크립트 전부 제거하고 Assets/UI 폴더·하이어라키 전반 정리→ 파일/오브젝트 이름 컨벤션 맞춰서 작업 속도 증가팀 머지씬·프리팹 충돌 해결하고 기능들 병합버그 수정특정 버튼 클릭 시 패널이 안 열리던 현상코드 라인-바이-라인 디버깅했지만 문제가 없었음결국 Inspector에 잘못 연결된 Reference가 원인 → 올바른 프리팹으로 다시 할당해 해결🧠 배운 점 / 느낀 점“코드보다 인스펙터 먼저”버그 재현이 깔끔한데 스크립트에서 원인이 안 보이면, 거의 레퍼런스 실수다.하이어라키·프로젝트 창 정리만으로도 작업 속도가 빨라진다.머지 전 “불필요 스크립트/프리팹 제거” → 충돌 난이도 확연히 낮아짐.

TIL 2025.07.05

[7/3] 여러 판넬들 대신 하나의 판넬이 모든 역할을 하도록 리팩토링

🎮 오늘 한 일MessagePopup 통합CheckPanel / YesNoPanel → MessagePopup 하나로 리팩토링YES/NO 버튼 자동 토글, Action onYes / onNo 콜백으로 재사용성 확보SelectAdventureUIController 개편모든 경고·확인 창을 messagePopup.Open() 한 줄로 처리스태미나/쥬얼 소모 로직을 UserDataManager API (UseStamina / UseJewel) 로 이관UserDataManager 싱글톤 작성Use / Add 계열 메서드 → 값 갱신 후 PublicUIController.Refresh() 자동 호출실수 방지를 위해 리소스 부족 시 false 반환하도록 설계HUD 모드 추가HudMode.Character 등 새 ..

TIL 2025.07.04

[6/27] 씬 전환 히스토리를 Stack 에 저장하여 뒤로가기 기능 구현

🎮 오늘 한 일SceneManagerEx 싱글톤 구현LoadScene(), LoadPreviousScene() 을 통해 씬 이동을 제어씬 전환 히스토리를 sceneStack 에 저장하여 뒤로가기 기능 구현DontDestroyOnLoad 로 로비씬에서 생성된 매니저를 유지시킴뒤로가기 버튼 공용화SceneBackButton 스크립트 생성 → SceneManagerEx.Instance.LoadPreviousScene() 호출이 스크립트를 적용한 SceneBackButton 프리팹을 제작해 씬마다 재사용덕분에 OnClick() 연결이 쉬워졌고, 직접 코드로 AddListener() 안 써도 됨씬 이동용 버튼도 공통 처리SceneLoadButton 스크립트 작성 → sceneName 을 인스펙터에서 설정해 Lo..

TIL 2025.07.02

[6/26] Battle UI Controller 구현 및 이미지 타입 공부

🎮 오늘 한 일Battle UI Controller 기본 틀 구현BattleUIController 스크립트에 주요 패널과 버튼 레퍼런스를 SerializeField로 선언하고 Inspector에 연결함.스테이지/배틀/승리/패배/아티팩트/이벤트 등 UI 패널들을 구분해 초기 비활성화 상태 세팅.버튼 클릭 시 호출될 OnClick 리스너들을 Start()에서 일괄 바인딩 처리.예: nextButton.onClick.AddListener(OpenBattlePanel); 형식으로 구성.선택 UI 외곽선 처리 실험아티팩트 버튼 선택 시 외곽선이 노랗게 보이도록 Outline 컴포넌트를 수동으로 추가하고 꺼 둔 상태에서 제어할 예정.선택한 버튼만 외곽선이 켜지도록 제어하고, 나머지는 끄는 방식으로 구현 계획.네이..

TIL 2025.07.02

[6/25] UI의 글씨와 배경 자동 리사이즈

🎮 오늘 한 일세팅 UI 리팩터링SettingUIController를 private SerializedField 구조로 통일 → settingButton / settingBg 직접 연결 후 Open/CloseSetting() 내부 처리.캔버스 안전 영역 정리 & Panel/Popup 계층 재배치.챕터 선택 화면 제작새 ChapterSelectPanel (+ 배경 도트 지도를 AI로 제작·적용).1 ~ 5 챕터 마커(버튼) + 하단 던전 팝업 UI 구성.DungeonSelectUIController 삭제 → DungeonSelectUIController를 Chapter/Dungeon 컨트롤 전용으로 재작성.버튼 → Controller 이벤트 연결 방식 통일OnClick 지정용 메서드(예: OpenSele..

TIL 2025.07.02

[6/24] 다용도로 쓸 팝업 제작 및 여러 UI 세팅들 실험

🎮 오늘 한 일로딩 씬LoadingSceneController 내 최소 대기 시간을 2 초 → 1 초로 축소Setting 팝업 완성SettingPanel(반투명 배경) + SettingPopup(창)로 분리배경 클릭 시 CloseSetting() / 팝업 내부 클릭은 무시UI 리소스·스크립트 정리Scripts/UI/ 폴더로 이동, 이미지 LeftArrow → BackButton 등 명명 통일Canvas & 3D 테스트Overlay 모드가 카메라 시야와 무관하게 렌더링됨을 확인3D Object가 UI 뒤에 가릴 때 해결책 실험🧠 배운 점Raycast TargetON : 클릭 이벤트를 가로채고 처리OFF : 이벤트를 통과시켜 뒤 UI로 전달팝업 외부 클릭 닫기 = 배경(Button + Raycast ON..

TIL 2025.07.02

[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