[🖥️Project: HoP] #6 프레임레이트 설정 만들기
·
카테고리 없음
프레임 제한 설정을 만드는데 프레임 제한하니까 마우스도 같이 느려지는 현상이 발생했다. 의도한 동작은 게임 내의 애니메이션 프레임을 제한하는 것이었는데, 마우스까지 느려지니까 굉장히 불편했다. 알고보니 프로젝트가 전체 창모드로 되어있어서 그랬다. 전체 창모드도 전체화면 모드로 들어가나보다. 전체화면 모드 vs 창 모드의 차이 전체화면 모드 (FullScreen, FullScreenWindow)DirectX/OpenGL이 디스플레이를 독점적으로 제어Windows DWM(Desktop Window Manager)이 우회되거나 제한적으로 작동Application.targetFrameRate가 시스템 전체 리프레시율에 영향을 줄 수 있음마우스 커서도 같은 리프레시율에 맞춰질 수 있음 창 모드 (Windowed..
[🖥️Project: HoP] #5 무한 점프 시스템
·
도토리도굴단/Project: HoP 개발일지
🚀 오늘의 작업 요약Frame Architecture: SpriteMask를 활용해 햄초와 배경이 지정된 프레임(창문) 안에서만 보이도록 시각적 제한 구현.Infinite Gameplay: 배경과 발판을 무한히 생성하고 재활용하는 무한 점프 코어 로직 완성.Massive Refactoring: 모호했던 WorldContainer의 책임을 EnvironmentController로 통합하고 SOLID 원칙에 맞춰 구조 대개편3일동안 처 삽질하다가 드디어 뭔가 나왔다.. 여전히 마음에 드는 건 아니지만 뭐라도 구현돼서 다행이다 .. ㅡㅜ 2주는 무슨 2주..생각보다 투명창 관련 이슈가 너무 많아서 아직 초짜 개발자로 도전할 건 아니었던 것 같은 느낌도 들지만 뭐 어쩌겠습니까 내가 선택한 길🛠 구현 상세 1..
[🖥️Project: HoP] #4 Windows Low-Level Hook과 전역 입력 감지
·
도토리도굴단/Project: HoP 개발일지
🚀 오늘의 작업 요약전역 감지: Windows Low-Level Hook을 이용해 백그라운드에서도 키보드/마우스 입력을 감지.스레드 안전성: OS 스레드와 Unity 메인 스레드 간의 충돌 방지를 위한 이벤트 큐 시스템 구축.상호작용: 글로벌 핫키(Ctrl+Shift+H) 및 햄초 스택 자동 증가 로직 연동.햄초 위젯의 핵심 기믹은 사용자가 열심히 일(타이핑/클릭)하는 만큼 스택이 쌓이는 것이다. 이를 위해 앱이 비활성 상태일 때도 입력을 감지할 수 있는 Global Input Hook 시스템을 구현했다.🛠 구현 상세오늘은 Unity의 샌드박스를 벗어나 Windows 운영체제 레벨의 이벤트를 다루는 작업을 진행했다.1. Global Input Hook 시스템 (GlobalInputHook.cs)Use..
[🔮Unity UI Project] #1 앵커/피벗 완벽 이해 및 해상도 대응 테스트
·
공부방/Unity UI
관련 유니티 공식 문서 캔버스 스케일러 - Unity 매뉴얼캔버스 스케일러(Canvas Scaler) 컴포넌트는 캔버스 내 UI 요소의 전체적인 스케일과 픽셀 밀도를 제어하는 데 사용됩니다. 스케일은 글꼴 크기와 이미지 경계 등 캔버스 아래의 모든 요소에 영향을docs.unity3d.com 1. Rect Transform일반적인 오브젝트가 3D 공간에서 Transform을 사용한다면, UI 공간은 Rect Transform을 사용한다. 픽셀 단위 크기를 사용하며 자신 직계 부모의 어느 지점에 고정할 것인지 결정하는 Anchor로 배치한다. 2. AnchorAnchor는 부모 RectTransform 내에서 정규화된 위치로, 부모의 크기가 변해도 같은 비율 위치를 유지한다.위치 = 앵커 위치 + Anch..
[🔮Unity UI Project] #0 UI 공부 로드맵
·
공부방/Unity UI
1 반응형 & 레이아웃1주차: 앵커/피벗 완벽 이해 및 해상도 대응 테스트2주차: Layout Group을 활용한 자동 크기 조절 UI3주차: 중첩 레이아웃 (복잡한 카드 UI)4주차: 범용 팝업창(Universal Popup) 프리팹 제작2 애니메이션 & 피드백1주차: DOTween 활용 버튼 인터랙션 (Hover/Click)2주차: 팝업 등장/퇴장 트랜지션 (Easing Function)3주차: 시각적 피드백 (숫자 카운팅, 파티클)4주차: 보상 획득 시퀀스(Juicy Reward) 프리팹 제작3 데이터 연동 시스템1주차: ScriptableObject 기반 데이터-뷰 분리2주차: 리스트 동적 생성 및 스크롤링3주차: 드래그 앤 드롭(Drag & Drop) 인터페이스 구현4주차: 기능성 인벤토리(Sm..
[🖥️Project: HoP] #3 애니메이션 시스템과 O(1) 최적화
·
도토리도굴단/Project: HoP 개발일지
🚀 오늘의 작업 요약애니메이션 시스템: Idle → Charge → Up → Fall로 이어지는 상태 머신 및 시퀀스 구현.구조적 최적화: String 비교와 선형 탐색을 제거하고 Hash와 Dictionary 캐싱 도입.정밀 제어: WaitForSeconds를 버리고 AnimatorStateInfo 기반의 프레임 단위 동기화 구현.위젯이 화면에 가볍게 떠 있으려면 지금까지 흐린눈해왔던 최적화 작업을 해야 한다..🛠 구현 상세1. 애니메이션 시퀀스 구조 (State Machine)햄초의 반응성을 높이기 위해 클릭 상호작용에 따른 애니메이션 흐름을 설계했다.기본 상태 (Idle): 평상시 상태.충전 상태 (Charge): 입력 스택이 가득 차면 햄초가 몸을 웅크리며 준비 자세를 취한다.반응 시퀀스 (U..
[🖥️Project: HoP] #2 위치 저장과 멀티 모니터
·
도토리도굴단/Project: HoP 개발일지
🚀 오늘의 작업 요약데이터 지속성: JSON 기반 위젯 위치 저장/로드 시스템 구현.환경 적응: Windows API를 활용한 멀티 모니터 선택 및 이동 기능 추가.🛠 구현 상세 1. 위젯 위치 저장 시스템 (WidgetSaveSystem)PlayerPrefs는 구조적인 데이터를 저장하기에 한계가 있어, 확장 가능한 JSON 방식을 택했다. 구현 내용: WidgetPositionData 클래스(ID, 좌표, 활성화 여부)를 정의하고, JSON 직렬화/역직렬화 유틸리티를 만들었다.결과:자동 저장: 위젯 드래그 종료 시(OnDragEnd) 개별 위치 업데이트.전체 저장: 앱 종료 시(OnApplicationQuit) 데이터 유실 방지를 위해 전체 상태 저장.복구: 앱 실행 시 JSON을 로드해 햄초를 마..
[🖥️Project: HoP] #1 투명 윈도우와 위젯 시스템 구축
·
도토리도굴단/Project: HoP 개발일지
🚀 오늘의 작업 요약Windows API 연동: 배경 없는 완전 투명 윈도우 및 'Always On Top' 구현스마트 클릭 시스템: 위젯 위에서는 클릭을 받고, 빈 공간은 데스크탑으로 클릭을 흘려보내는 Raycast 시스템 구축확장형 아키텍처: BaseWidget과 DraggableWidget 분리로 유지보수가 쉬운 위젯 구조 설계예전 PokeIdle 기획이랑 투명 창까지만 구현해놓고 독감걸려서 못 만들었는데, 12월 미니 프로젝트로 햄초버전 데스크탑 위젯을 만드는 데에 기반으로 쓸 수 있었다. PokeIdle은 이번 프로젝트를 기반 삼아서 나중에 시간 남으면 만들어보는걸로 ... 🛠 구현 상세오늘은 Project HoP(Hamcho on PC)가 데스크탑 앱으로서 기능하기 위한 기반 공사를 진행했..
[🐹Project: HSR] #3 Unity Localization + Google Sheets 연동 및 후처리
·
도토리도굴단/Project: HSR 개발일지
개요Unity의 Localization Package와 Google Sheets를 연동하여 다국어 시스템을 구축하고, Google Sheets에서 입력한 \n 등의 이스케이프 시퀀스가 실제 개행문자로 변환되도록 후처리하는 방법을 정리했다.Unity Localization Package 설정1.1 패키지 설치Window > Package Manager > Unity Registry > Localization 검색 후 설치1.2 기본 설정Window > Asset Management > Localization Tables 열기Create 버튼으로 새 Localization Settings 생성Available Locales에 지원할 언어들 추가 (Korean, English 등)String Table Col..
[🐹Project: HSR] #2 플레이어 데이터 수집, 플래그 체크
·
도토리도굴단/Project: HSR 개발일지
Analytics 시스템 전체 구조와 동작 원리 정리 1. 핵심 아키텍쳐: 이중 데이터 구조시스템의 근간은 두 종류의 데이터를 효율적으로 관리하기 위한 이중 구조에 있음. 각 데이터 유형의 본질적인 특성을 고려한 설계로, 하나는 연속적인 수치를, 다른 하나는 명확한 상태(On/Off)를 다루는 데 최적화됨. 수치 데이터 (Numeric Data): Dictionary 자료구조를 통해 관리됨. "jump_count", "playtime"과 같이 지속적으로 누적되거나 변화하는 값을 저장하는 데 사용됨. Key-Value 쌍을 이용하므로 특정 데이터에 O(1) 시간 복잡도로 접근할 수 있어 조회가 빠르고, 새로운 추적 항목을 코드 수정 없이 동적으로 추가할 수 있는 유연성을 확보함.상태 데이터 (Flag Da..