no image
내일배움캠프 88일차 TIL [최종 프로젝트 Black Chamber - 마무리]
🗓️ 오늘 하루 일정✅ 오전09:00 ~ 09:20 : 발제 진행09:20 ~ 13:00 : 팀 버그 수정 · 브로셔 수정 · PPT 수정 · 발표 준비🍽️ 점심시간13:00 ~ 14:00 : 점심시간✅ 오후14:00 ~ 16:00 : 타 팀 발표 시청 · 우리 팀 발표 진행16:00 ~ 18:00 : 팀원들과 시간(회고/정리/휴식)🍽️ 저녁시간18:00 ~ 19:00 : 저녁/이동✅ 저녁19:00 ~ 21:00 : ZEP 온라인 메타버스 부스 운영✅ 오늘 학습 키워드발제, 발표 준비, 버그 수정, 브로셔/슬라이드 개선, 협업 커뮤니케이션, ZEP, 메타버스 부스 운영, 라이브 오퍼레이션✅ 오늘 학습 한 내용을 나만의 언어로 정리하기발표 퀄리티는 “마지막 10% 다듬기”에서 갈린다. 브로셔·PPT의..
2025.11.07
no image
내일배움캠프 87일차 TIL [최종 프로젝트 Black Chamber]
🗓️ 오늘 하루 일정✅ 오전09:30 ~ 10:30 : 무기 패널 슬라이드 제거 → iconImage 즉시 교체 구조로 리팩터링10:30 ~ 11:20 : Armory 슬롯 연동(등급 색/보더/이름) 및 호환 API 유지(SetAllSprites, SlideWith* no-op)11:20 ~ 12:00 : Light2D × FOW 증상 재현 & 원인 정리(정렬/머티리얼/마스크 체크)🍽️ 점심시간13:00 ~ 14:00 : 점심시간✅ 오후14:00 ~ 15:30 : FOW 트러블슈팅(요약 카드) 작성 — 텍스처 페인트 → 레이캐스트+GPU 버퍼 전환, 현재 코드 스니펫 반영15:30 ~ 16:30 : Light2D × FOW 트러블슈팅 문서화 — 레이어 분리, Culling Mask, Unlit 머티리..
2025.11.06
no image
내일배움캠프 86일차 TIL [최종 프로젝트 Black Chamber]
🗓️ 오늘 하루 일정✅ 오전09:00 ~ 09:30 : 레이어 순서 확정 + 미니맵은 +1 규칙 적용09:30 ~ 10:10 : 경고 아이콘 상태 로직 정리(의심/경계 + minIconShowTime)10:10 ~ 11:00 : “!” 아이콘 2초 뒤 Destroy 방식 설계·구현(프리팹/앵커 기준)11:00 ~ 12:00 : Gunimage 슬라이드 리팩토링 설계(SlideWithData / ApplyOverlay / SetAllSprites) + CS0019 에러 수정12:00 ~ 13:00 : 패널·아이콘 겹침 제거 → 패널 전용 모드 전환, raycastTarget=false 정리🍽️ 점심시간13:00 ~ 14:00 : 점심시간✅ 오후14:00 ~ 14:20 : 팀 회의(간단 진행 사항 공유)..
2025.11.05
no image
내일배움캠프 85일차 TIL [최종 프로젝트 Black Chamber]
🗓️ 오늘 하루 일정✅ 오전10:15 ~ 11:05 : 매니저 아키텍처 재점검(각 매니저 역할 한 줄 요약 정리)11:05 ~ 12:00 : 대용량 스크립트 핸들링 대안 조사(툴/흐름 점검)🍽️ 점심시간13:00 ~ 14:00 : 점심시간✅ 오후14:00 ~ 15:30 : 브로셔용 Analytics 퍼널 성과 섹션 작성(지표·인사이트·액션아이템)15:30 ~ 16:30 : 기술 스택 정리(디자인 패턴, Input System, Analytics, Fog of War, DOTween)16:30 ~ 17:30 : 깃허브 정리(README/섹션 구조·커밋 라벨링 기준 점검)17:30 ~ 18:00 : 퍼널 차트 재해석 및 문구 다듬기🍽️ 저녁시간18:00 ~ 19:00 : 저녁시간✅ 저녁19:00 ~ 2..
2025.11.04
no image
내일배움캠프 84일차 TIL [최종 프로젝트 Black Chamber]
🗓️ 오늘 하루 일정✅ 오전10:30 ~ 12:00 : 6차 목표 정리 — 스테이지 작업 범위/담당 분배, 업데이트 항목(무기·상점·무기방·사격장·Stage 4·5) 재확인12:00 ~ 12:50 : 브로셔 골격 확정 & 레퍼런스 정리(섹션/필수 에셋 목록화)🍽️ 점심시간13:00 ~ 14:00 : 점심시간✅ 오후14:00 ~ 14:30 : 브로셔/노션 정리 — 제출 규격(커버 380×270, 로고 150×100, 피그마 링크) 체크14:30 ~ 15:30 : 레이저 SFX 레퍼런스 탐색(설정 UI 오픈 연동용; “지이잉” 무드)15:30 ~ 17:00 : GitHub 코드/스크립트 분석 — 구조 도식화, What·How·Why 초안17:00 ~ 18:00 : QA 동기화 — 이슈 재현/분류(튜토리얼..
2025.11.03
no image
내일배움캠프 83일차 TIL [최종 프로젝트 Black Chamber]
🗓️ 오늘 하루 일정✅ 새벽00:40 ~ 01:10 : ASMR/콘텐츠 작업 정리(짧은 캡션 구조 점검)✅ 오전09:45 ~ 11:50 : Armory(무기 방) 캐러셀 동작 재현 및 원인 분해11:50 ~ 12:10 : GIF로 현상 확인(“슬라이드 후 교체” 타이밍 문제 명확화)🍽️ 점심시간13:00 ~ 14:00 : 점심시간✅ 오후14:05 ~ 16:10 : 이미지 사전 주입(preload) → 슬라이드 → 종료 후 확정 패턴 적용16:10 ~ 16:35 : 좌/우 방향 매핑 확인(버튼 핸들러 분리), 레이아웃 간섭 점검🍽️ 저녁시간18:00 ~ 19:00 : 점심시간✅ 저녁19:10 ~ 19:40 : CCTV 타겟 “최초 발견” 사운드 트리거 지점 확정(엣지 검출)✅ 오늘 학습 키워드캐러셀 ..
2025.10.31
no image
내일배움캠프 82일차 TIL [최종 프로젝트 Black Chamber]
🗓️ 오늘 하루 일정✅ 오전11:35 ~ 12:30(팀) 스테이지4 미니맵 초안 완료, 카메라 흔들림 조정🍽️ 점심시간13:00~14:00 : 점심 식사✅ 오후12:35 ~ 13:30(나) Wall/Door/SteelDoor 피격 SFX 추가, 근접공격 SFX 추가(나) Title GIF 자글거림 수정, Store UI 작업 정리(팀) feature/player 병합13:35 ~ 14:10(나) 프리팹 분리 저장(팀) 인게임 무기 이미지에 현재 무기 반영15:35 ~ 16:20(팀) 상점 UI 변경, 갈무리체 정상 노출 & Bold 추가(팀) 적 데이터 및 equipWeapon 연동16:35 ~ 17:30(나) 타이틀 작업(feat 타이틀)(나) Enemy Dialog 고정(팀) 스테이지5 벽/바닥 ..
2025.10.30
no image
내일배움캠프 81일차 TIL [최종 프로젝트 Black Chamber]
🗓️ 오늘 하루 일정✅ 오전10:00 ~ 12:10 : Blood 프리팹 추가·수정, Stage4 머니스포너/철문/탈출구 배치, Title GIF 적용🍽️ 점심시간13:00 ~ 14:00 : 점심✅ 오후14:10 ~ 15:10 : 로딩 씬 디자인 변경 & 재업로드, UI 브랜치 머지 정리15:10 ~ 16:10 : 상점 UI 개편, 무기 등급 데이터 연동, Gun 이미지 픽셀 크기/Point 교체, GunData 재적용16:10 ~ 16:40 : 총구 위치 오류 수정, 타이틀 마지막 프레임 반짝임 Fix16:40 ~ 17:10 : 벽/문/철문 & 플레이어 근접공격 사운드 추가·Fix, 에임 조준 시 카메라 크기 조정, 미니맵 라이트 씬 추가, FOW(전장의 안개) 수정, Stage2·3 스테이지 손질..
2025.10.29
반응형

🗓️ 오늘 하루 일정

✅ 오전

  • 09:00 ~ 09:20 : 발제 진행
  • 09:20 ~ 13:00 : 팀 버그 수정 · 브로셔 수정 · PPT 수정 · 발표 준비

🍽️ 점심시간

  • 13:00 ~ 14:00 : 점심시간

✅ 오후

  • 14:00 ~ 16:00 : 타 팀 발표 시청 · 우리 팀 발표 진행
  • 16:00 ~ 18:00 : 팀원들과 시간(회고/정리/휴식)

🍽️ 저녁시간

  • 18:00 ~ 19:00 : 저녁/이동

✅ 저녁

  • 19:00 ~ 21:00 : ZEP 온라인 메타버스 부스 운영

✅ 오늘 학습 키워드

발제, 발표 준비, 버그 수정, 브로셔/슬라이드 개선, 협업 커뮤니케이션, ZEP, 메타버스 부스 운영, 라이브 오퍼레이션


✅ 오늘 학습 한 내용을 나만의 언어로 정리하기

  • 발표 퀄리티는 “마지막 10% 다듬기”에서 갈린다. 브로셔·PPT의 톤앤매너/문구 정합성을 맞추니 메시지가 한결 선명해졌다.
  • 버그 수정은 ‘빠른 재현 → 원인 분리 → 근본 해결’ 루틴이 효율적. 작은 증상도 재현 시나리오를 명확히 적어두면 팀 전달이 쉬워진다.
  • ZEP 부스 운영은 현장 대응력이 핵심. 안내 문구(한 줄 FAQ)와 동선(입장→체험→문의)을 간결하게 잡으니 유입-체류-전환 흐름이 매끄러웠다.

🧩 학습하며 겪었던 문제점 & 에러

  • 오늘은 코드 레벨의 에러/충돌 특이사항 없음(기록할 만한 이슈 無).
  • 운영 메모: 부스 안내 문구는 첫 3초에 핵심 기능을 보여주는 짧은 GIF/영상이 있으면 전환율 더 올라갈 듯.

📝 메모

오늘 하루도 꽉 채웠다. 발표 준비에 팀이 한마음으로 몰입해준 게 특히 고마웠고, ZEP 부스 운영도 큰 삐걱임 없이 잘 마무리! 😊

드디어 끝났다 오예!~! 우리 팀원들도 너무 고생했고 게임도 너무 잘 나와서 만족한다 앞으로도 화이팅!!~!


반응형
반응형

🗓️ 오늘 하루 일정

✅ 오전

  • 09:30 ~ 10:30 : 무기 패널 슬라이드 제거 → iconImage 즉시 교체 구조로 리팩터링
  • 10:30 ~ 11:20 : Armory 슬롯 연동(등급 색/보더/이름) 및 호환 API 유지(SetAllSprites, SlideWith* no-op)
  • 11:20 ~ 12:00 : Light2D × FOW 증상 재현 & 원인 정리(정렬/머티리얼/마스크 체크)

🍽️ 점심시간

  • 13:00 ~ 14:00 : 점심시간

✅ 오후

  • 14:00 ~ 15:30 : FOW 트러블슈팅(요약 카드) 작성 — 텍스처 페인트 → 레이캐스트+GPU 버퍼 전환, 현재 코드 스니펫 반영
  • 15:30 ~ 16:30 : Light2D × FOW 트러블슈팅 문서화 — 레이어 분리, Culling Mask, Unlit 머티리얼, Sorting 고정
  • 16:30 ~ 17:10 : 발표 대본 낭독 시간 산출 및 5분 내 맞추는 압축 포인트 정리
  • 17:10 ~ 18:00 : 리그레션 점검(큰 맵 이동, 다수 리빌러 스로틀, UI 가림 현상 확인)

🍽️ 저녁시간

  • 18:00 ~ 19:00 : 저녁시간

✅ 저녁

  • 20:00 ~ 21:00 : FOW 경계 떨림 최소화(픽셀 스냅 세팅 재확인) & 정리
  • 21:00~~ : 완성까지 야근~~..

✅ 오늘 학습 키워드

  • Unity URP 2D, Light2D Culling Mask, Sorting Layer/Order
  • Fog of War: 레이캐스트 기반 가시 폴리곤, ComputeBuffer 합성(Apply 제거)
  • UI/이미지 리팩터링: 슬라이드 제거, 즉시 스프라이트 교체, 레거시 API 호환 전략
  • 발표 대본 시간 최적화(문장 밀도/삭제 규칙)

✅ 오늘 학습 한 내용을 나만의 언어로 정리하기

  • 슬라이드는 과감히 제거하고, 썸네일 역할의 iconImage를 “메인 디스플레이”로 겸용했다. 핵심은 즉시 교체와 호출부 호환. 기존 슬라이드 호출은 no-op으로 두어 리스크 없이 이식했다.
  • FOW는 ‘왜 바꿨는가’가 중요했다. 텍스처 페인트는 정확도와 성능(Apply 스파이크) 모두에서 한계가 있었고, 지금 구조(레이캐스트 샘플 → GPU 버퍼로 합성)는 장면 크기가 커질수록 이점이 커진다.
  • Light2D와 FOW는 “누가 누구에게 영향 받는가”를 명확히 끊어내는 것이 해법. 레이어/마스크/머티리얼 세팅을 고정하면, 라이트 누수와 UI 가림이 같이 해결된다.
  • 발표 대본은 문장 길이를 줄이기보다 ‘메시지 층’을 하나 덜어내는 방식이 효율적이었다(근거·예시·부연 중 부연 컷).

🧩 학습하며 겪었던 문제점 & 에러

무기 패널 슬라이드 전환 시 이미지 꼬임

  • 문제정의: 슬라이드 중 이미지가 바뀌는 타이밍 꼬임, 패널과 아이콘 중복 관리.
  • 시도: 슬라이드 타이밍/정렬 수정 → 근본적 복잡도 유지.
  • 해결방법: 슬라이드 기능 제거. iconImage만 메인으로 사용, 즉시 스프라이트 교체. 레거시 호출은 no-op/호환.
  • 코드 스니펫(요지):
  • // SetData: 아이콘 + 색상 + 이름 + 스프라이트 즉시 반영 iconImage.preserveAspect = true; iconImage.sprite = data?.prefabInfo?.weaponSprite; // 레거시 슬라이드 호출 호환 public void SlideWithData(bool _, GunData __, GunData to, System.Action onDone = null) { SetData(to); onDone?.Invoke(); }
  • 새롭게 알게 된 점: 슬라이드 UX보다 지연 없는 피드백이 더 이득인 상황.
  • 다시 만나면: 애니메이션이 필요하면 진입/퇴장 페이드 120~180ms만 선택 적용.

📝 메모

  • 오늘은 “무엇을 버리고 무엇을 고정할지”가 성과를 만들었다. 슬라이드를 버리고, 라이트-안개-UI 경계를 고정하니 시스템이 조용해졌다.
  • 발표 대본도 같은 맥락. 핵심 메시지만 남겨 12분에 딱 맞추자.
  • 내일은 모바일 프리셋(rayCount 128, N-Per-Frame)로 실측 프로파일링까지 찍어보자.
  • 오늘은~ 야근이다아~ 내일 마지막이니 하루만 고생하자.. 내일도 화이팅!!

반응형
반응형

🗓️ 오늘 하루 일정

✅ 오전

  • 09:00 ~ 09:30 : 레이어 순서 확정 + 미니맵은 +1 규칙 적용
  • 09:30 ~ 10:10 : 경고 아이콘 상태 로직 정리(의심/경계 + minIconShowTime)
  • 10:10 ~ 11:00 : “!” 아이콘 2초 뒤 Destroy 방식 설계·구현(프리팹/앵커 기준)
  • 11:00 ~ 12:00 : Gunimage 슬라이드 리팩토링 설계(SlideWithData / ApplyOverlay / SetAllSprites) + CS0019 에러 수정
  • 12:00 ~ 13:00 : 패널·아이콘 겹침 제거패널 전용 모드 전환, raycastTarget=false 정리

🍽️ 점심시간

  • 13:00 ~ 14:00 : 점심시간

✅ 오후

  • 14:00 ~ 14:20 : 팀 회의(간단 진행 사항 공유)
  • 14:20 ~ 15:20 : 브로셔 작업(구성 확정, 캡처 수집)
  • 15:20 ~ 16:40 : 무기방(Armory) 표기-데이터 매핑을 상점과 동일 규격으로 정렬
  • 16:40 ~ 17:30 : ArmorySlotView 바인딩/포맷 적용, 1차 테스트
  • 17:30 ~ 18:00 : 잔버그 픽스(텍스트 포맷·컬러 인덱스)

🍽️ 저녁시간

  • 18:00 ~ 19:00 : 저녁시간

✅ 저녁

  • 19:00 ~ 19:40 : 무기방 데이터 정리(상점 데이터와 완전 일치 확인)
  • 19:40 ~ 20:20 : 슬라이드/패널 교체 엣지 케이스 테스트(첫/마지막 인덱스, 급연타)
  • 20:20 ~ 21:00 : 브로셔 손보기 & TIL 정리

✅ 오늘 학습 키워드

Unity UI 레이어링, 미니맵 오프셋, 상태-뷰 분리, 프리팹 라이프사이클, DOTween 슬라이드, C# null-조건부 연산자, Armory·Shop 스펙 동기화, 패널 전용 썸네일 방식


✅ 오늘 학습 한 내용을 나만의 언어로 정리하기

  • 상태와 표시를 분리하면 UI 수명이 단순해진다. Alert 상태는 유지하되, “!” 아이콘은 프리팹 인스턴스로 생성해서 2초 후 파괴하면 깔끔하다.
  • 슬라이드는 애니메이션 완료 시점을 싱크 포인트로 삼아, 그때 아이콘/컬러/텍스트/패널 스프라이트한 번에 갱신한다.
  • 썸네일은 패널 하나로 일원화하는 편이 겹침·정렬·입력 충돌을 줄인다. 필요하면 오버레이는 옵션으로 유지.
  • C#에서는 참조형을 &&로 평가할 수 없다 → null-조건부(?.) 로 안전하게 스프라이트 접근.

🧩 학습하며 겪었던 문제점 & 에러

1) “!” 아이콘 수명 관리

  • 문제정의: Alert 지속 중 아이콘 잔상/깜빡임 발생
  • 시도: SetActive(false) 토글 → 다음 Alert 때 상태 꼬임
  • 해결방법: 프리팹 인스턴스 생성 → 2초 뒤 Destroy
  • var go = Instantiate(exclamationIconPrefab, iconAnchor ?? transform); go.transform.localPosition = Vector3.zero; Destroy(go, 2f);
  • 새롭게 알게 된 점: 상태값과 시각 요소의 수명 분리가 안정적
  • 다시 만나면: 빈번 생성이면 풀링으로 전환

2) CS0019: && 피연산자에 참조형 사용

  • 문제정의: fromData && fromData.prefabInfo 방식의 널체크로 컴파일 에러
  • 해결방법: null-조건부로 교체
  • Sprite fromSprite = fromData?.prefabInfo?.weaponSprite; Sprite toSprite = toData?.prefabInfo?.weaponSprite;
  • 새롭게 알게 된 점: 참조형은 bool로 평가되지 않는다
  • 다시 만나면: 팀 코딩 규칙에 널체이닝 우선 명시

3) 패널 이미지와 아이콘 오버레이 겹침

  • 문제정의: 캐러셀 패널과 아이콘이 중첩 렌더 + 입력 충돌
  • 해결방법: 패널 전용 모드(overlay off)로 전환, 패널 raycastTarget=false
  • useOverlayIcon = false; if (iconImage) iconImage.enabled = false; foreach (var rt in panels) rt.GetComponent<Image>().raycastTarget = false;
  • 새롭게 알게 된 점: 썸네일 소스를 단일화하면 동기화 포인트가 줄어든다
  • 다시 만나면: 오버레이는 퀵옵션으로만 유지

4) 슬라이드 후 새 데이터가 즉시 반영되지 않음

  • 문제정의: 슬라이드 애니메이션은 정상이나 완료 직후 텍스트/컬러가 이전 상태
  • 해결방법: SlideWithData 도입 → 완료 콜백에서 일괄 갱신
  • public void SlideWithData(bool toRight, GunData fromData, GunData toData, System.Action onComplete = null) { var fromSprite = fromData?.prefabInfo?.weaponSprite; var toSprite = toData?.prefabInfo?.weaponSprite; SlideWithSprites(toRight, fromSprite, toSprite, () => { SetAllSprites(toData); // 패널 + 이름 + 등급색 동기화 onComplete?.Invoke(); }); }
  • 새롭게 알게 된 점: 애니 완료 시점을 UI 동기화 트리거로 통일
  • 다시 만나면: 시작 시점 선적용(미리보기) 옵션도 제공

🗂️ 무기방(Armory) 표기 규격 ― 상점과 동일

  • 분류: prefabInfo.phaseTag(잠입/난전/공용) + subType(HG/SMG/AR/SG/SR)
  • 데미지: damage / RPM: rpm / 소음: volume(0~100)
  • 재장전 시간: baseReloadTime * (100 / reloadSpeed) → 0.00s
  • 장탄수: maxAmmo
  • 정확도/정밀도/안정성: accuracy / precision / stability
  • 조준시 정확도/정밀도/안정성: aimAccuracy / aimPrecision / aimStability
  • 조준배율: aimMagnification(기본 1.0x)

📝 메모

오늘은 “작게, 단순하게, 한 번에 갱신” 원칙을 제대로 지켰다.

겹침을 제거하고 상태-뷰를 분리하니 UI가 한결 안정적이다.

오후·저녁에 브로셔와 무기방 정렬까지 마무리해서, 발표 퀄리티를 한 단계 올리자. 파이팅! 💪


반응형
반응형

🗓️ 오늘 하루 일정

✅ 오전

  • 10:15 ~ 11:05 : 매니저 아키텍처 재점검(각 매니저 역할 한 줄 요약 정리)
  • 11:05 ~ 12:00 : 대용량 스크립트 핸들링 대안 조사(툴/흐름 점검)

🍽️ 점심시간

  • 13:00 ~ 14:00 : 점심시간

✅ 오후

  • 14:00 ~ 15:30 : 브로셔용 Analytics 퍼널 성과 섹션 작성(지표·인사이트·액션아이템)
  • 15:30 ~ 16:30 : 기술 스택 정리(디자인 패턴, Input System, Analytics, Fog of War, DOTween)
  • 16:30 ~ 17:30 : 깃허브 정리(README/섹션 구조·커밋 라벨링 기준 점검)
  • 17:30 ~ 18:00 : 퍼널 차트 재해석 및 문구 다듬기

🍽️ 저녁시간

  • 18:00 ~ 19:00 : 저녁시간

✅ 저녁

  • 19:00 ~ 20:00 : 브로셔 문장 톤 통일, 표/용어 맞춤법 체크
  • 20:00 ~ 21:00 : 팀 프로젝트 저녁 스크럼

✅ 오늘 학습 키워드

Unity Analytics Funnel, 전환율 분석, 평균 vs 중앙값, A/B 테스트, Unity Input System, DOTween, Fog of War, State/Observer/Singleton 패턴, GitHub Flow, 브로셔 카피라이팅


✅ 오늘 학습 한 내용을 나만의 언어로 정리하기

  • 퍼널은 튜토리얼 → Stage1 → Stage2 → Stage3로 설계하고, stage_id 파라미터로 단계별 전환을 추적한다.
  • 가장 큰 이탈은 튜토리얼 완료 → Stage1 완료 구간에서 발생한다. 이 구간은 난이도/온보딩/리소스 보장과 직결되므로 초반 스폰 밀도 완화, 체크포인트/실패 보상, 유도 툴팁으로 실험할 가치가 크다.
  • 평균 시간과 중앙값의 괴리는 방치 세션의 영향일 가능성이 높다. 분석의 신뢰도를 위해 무입력 N분 제외, 일시정지 시간 비집계, 세션 클린업 이벤트가 필요하다.
  • 기술 스택 문서는 “디자인 패턴(아키텍처)엔진/시스템애널리틱스/백엔드협업/배포”의 4층 구조로 쓰면 읽는 사람이 맥락을 한 번에 잡는다.
  • 깃허브 정리는 **커밋 프리픽스(Feat/Fix/Refactor/Docs)**와 **README 핵심 섹션(개요·플레이·기술스택·트러블슈팅·팀)**만 통일해도 전달력이 확 올라간다.

🧩 학습하며 겪었던 문제점 & 에러

  • 오늘은 브로셔, 깃허브 문서작성!

📝 메모

  • 이제 거의 마지막이 되어가는데 마지막까지 하루하루 화이팅!! 문서작업은 아직도 귀찮은거 같다 ㅠㅜ 그래도..해야지…

반응형
반응형

🗓️ 오늘 하루 일정

✅ 오전

  • 10:30 ~ 12:00 : 6차 목표 정리 — 스테이지 작업 범위/담당 분배, 업데이트 항목(무기·상점·무기방·사격장·Stage 4·5) 재확인
  • 12:00 ~ 12:50 : 브로셔 골격 확정 & 레퍼런스 정리(섹션/필수 에셋 목록화)

🍽️ 점심시간

  • 13:00 ~ 14:00 : 점심시간

✅ 오후

  • 14:00 ~ 14:30 : 브로셔/노션 정리 — 제출 규격(커버 380×270, 로고 150×100, 피그마 링크) 체크
  • 14:30 ~ 15:30 : 레이저 SFX 레퍼런스 탐색(설정 UI 오픈 연동용; “지이잉” 무드)
  • 15:30 ~ 17:00 : GitHub 코드/스크립트 분석 — 구조 도식화, What·How·Why 초안
  • 17:00 ~ 18:00 : QA 동기화 — 이슈 재현/분류(튜토리얼·로비 사운드, 재장전+ESC, 로비 메뉴 버튼 등)

🍽️ 저녁시간

  • 18:00 ~ 19:00 : 저녁시간

✅ 저녁

  • 19:00 ~ 20:30 : 발표 준비 — 브로셔 업데이트, 깃허브 정리, 플레이 소개 영상 콘티
  • 20:30 ~ 21:30 : 애널리틱스 이벤트/파라미터 설계 초안
  • 21:30 ~ 22:00 : QA 재확인 & 내일 할 일 정리

✅ 오늘 학습 키워드

  • 페이즈 전환 원자성(Observer 기반 동기화), 데이터 주도 무기 설계(SO),Input 게이팅(재장전 중 사격 차단), Analytics 이벤트 설계(파라미터 스키마)
  • AudioMixer 스냅샷/라우팅, Pause-safe UI(코루틴 중단 대응),

✅ 오늘 학습 한 내용을 나만의 언어로 정리하기

  • 전환은 ‘동시에’ 일어나야 자연스럽다. 스텔스↔전투 전환 시 무기/카메라/HUD/AI가 한 틱이라도 어긋나면 체감 품질이 바로 떨어진다. 전역 상태 변경 → 이벤트 발행 → 구독자들이 원자적으로 처리하는 구조가 가장 안전하다.
  • 무기는 데이터가 주도한다. GunData(SO)로 장탄·반동·연사·데미지를 정의해두면, 코드는 역할에 집중하고 추가/밸런스는 데이터로 빠르게 돌릴 수 있다.
  • UI는 ‘일시정지’에 흔들리지 않아야 한다. 재장전 게이지처럼 코루틴 기반 UI는 Pause에 의해 멈출 수 있다. Pause-safe(중단 시 숨김·복원) 패턴으로 사용자 혼란을 줄인다.
  • 사운드는 라우팅과 카테고리가 전부다. Mixer 그룹/스냅샷을 명확히 하고, 씬 전환마다 초기화 지점을 표준화하면 “씬 바뀌면 소리 없어짐” 류의 버그가 급감한다.
  • QA는 재현→원인 가설→수정 체크리스트로 닫는다. 증상 나열에서 끝내지 말고, 가설과 조치안, 담당, 검증 항목을 바로 붙인다.

🧩 학습하며 겪었던 문제점 & 에러

  1. 튜토리얼 소리 안 들림 / 튜토리얼→로비 후 로비 소리 미출력
    • 문제정의: 씬 전환 후 BGM/SFX 미출력
    • 시도: AudioMixer 스냅샷 적용 확인, 씬마다 AudioListener 중복 여부 점검
    • 해결 방법:
      • 씬 진입 공통 훅에서 Mixer 스냅샷 초기화(튜토리얼/로비 공통)
      • DontDestroyOnLoad 오디오 매니저 단일화(중복 생성 방지)
      • 튜토리얼 UI SFX는 2D(SpatialBlend=0) 강제
    • 새롭게 알게 된 점: 씬별 초기화 순서가 달라도 스냅샷 리콜이 1순위여야 안정적
    • 다시 만나면: 씬 로딩 이벤트에 **오디오 헬스체크(음소거/그룹/리슨너)**를 체크리스트화
  2. 좌클릭하면서 재장전하면 계속 총알이 나감
    • 문제정의: isReloading 중에도 Fire 입력이 소비됨
    • 시도: 입력 게이팅 플래그 추가, 재장전 코루틴에서 canFire=false 적용
    • 해결 방법:
      • Fire 핸들러 초입에 Early-return: if(isReloading || !canFire) return;
      • 재장전 종료 이벤트에서만 canFire=true 복원(취소/중단 분기 포함)
    • 새롭게 알게 된 점: New Input System은 performed가 큐에 남을 수 있어 버퍼 클리어 필요
    • 다시 만나면: 입력 상태 머신을 작게 분리(Idle/Reload/Blocked)
  3. 재장전 중 ESC 누르면 재장전 UI 멈춤
    • 문제정의: Pause로 코루틴 정지 → 게이지 영구 고정
    • 시도: Pause 시 UI 비활성/코루틴 중단, Resume 시 게이지 재계산
    • 해결 방법:
      • Pause 진입: 게이지 숨김 + 코루틴 Cancel
      • Resume: 남은 시간 기반 재시작 또는 0으로 초기화(디자인 결정)
    • 새롭게 알게 된 점: Pause-safe UI는 상태 복원 함수를 필수로 둬야 함
    • 다시 만나면: UI 코루틴에 CancellationToken 패턴 도입
  4. 로비 메뉴 버튼 미작동
    • 문제정의: 버튼 클릭 미반응(로비)
    • 시도: EventSystem/Cameras/Canvas Sort Order/Raycast Target 교차 점검
    • 해결 방법:
      • 로비 진입 시 전투 HUD Canvas 비활성(레이캐스트 블록 제거)
      • 버튼 그룹 Canvas Sorting 상단으로 고정, Graphic Raycaster 확인
    • 새롭게 알게 된 점: 전투 HUD가 로비에서도 살아 있으면 UI 사건이 막힌다
    • 다시 만나면: 씬 전환 시 UI 토폴로지 스냅샷 적용(활성/비활성 표준화)

🎯 6차 목표 — 오늘 기준 정리

  • 스테이지 작업(4,5 포함)
  • 브로셔 작성/정리(재은·유경)
  • 애널리틱스 이벤트·파라미터 추가
  • QA·버그 수정(혜현·도현·현수) / 문 체크(도현) / QA 총괄(현수)
  • 적 배치·무기 밸런스 조정(민규)
  • 총마다 사운드 분화(노아)
  • 발표 준비(13분): 브로셔·깃허브 정리·플레이 소개 영상
  • 제출 자산: 커버(380×270), 팀 로고(150×100), 피그마 링크, 영상

📝 메모

오늘은 전환의 원자성Pause-safe UI의 중요성을 다시 체감했다. 생각보다 기본기가 흔들리면 체감 품질이 크게 떨어진다. 하나씩 틈을 메우는 느낌으로 가자. 완성도는 디테일에서 나온다. 내일은 오디오 스냅샷과 입력 게이팅을 확실히 닫아두자. 끝까지 꾸준히. 화이팅ㅠㅜ


반응형
반응형

🗓️ 오늘 하루 일정

✅ 새벽

  • 00:40 ~ 01:10 : ASMR/콘텐츠 작업 정리(짧은 캡션 구조 점검)

✅ 오전

  • 09:45 ~ 11:50 : Armory(무기 방) 캐러셀 동작 재현 및 원인 분해
  • 11:50 ~ 12:10 : GIF로 현상 확인(“슬라이드 후 교체” 타이밍 문제 명확화)

🍽️ 점심시간

  • 13:00 ~ 14:00 : 점심시간

✅ 오후

  • 14:05 ~ 16:10 : 이미지 사전 주입(preload) → 슬라이드 → 종료 후 확정 패턴 적용
  • 16:10 ~ 16:35 : 좌/우 방향 매핑 확인(버튼 핸들러 분리), 레이아웃 간섭 점검

🍽️ 저녁시간

  • 18:00 ~ 19:00 : 점심시간

✅ 저녁

  • 19:10 ~ 19:40 : CCTV 타겟 “최초 발견” 사운드 트리거 지점 확정(엣지 검출)

✅ 오늘 학습 키워드

  • 캐러셀 타이밍 분리: 슬라이드 전 사전 스프라이트 주입슬라이드 후 상태 확정
  • DOTween SetUpdate(true)로 타임스케일 0 UI에서도 애니메이션
  • RectTransform 안정화: anchor/pivot 중앙, anchoredPosition = Vector2.zero
  • 레이아웃 간섭 최소화: LayoutElement.ignoreLayout = true
  • “최초 감지” 사운드: 엣지(없음→있음) 검출로 1회 트리거

✅ 오늘 학습 한 내용을 나만의 언어로 정리하기

  • 문제의 핵심은 “이미지 교체 타이밍”이었다. 버튼 클릭 시 **들어올 패널(toPanel)**에 다음 스프라이트를 먼저 칠해두고 슬라이드를 시작해야, 사용자가 “바뀔 이미지가 옆에서 들어오는” 것으로 인지한다.
  • 슬라이드가 끝난 뒤에만 인덱스/장착/패널 통일을 수행하면, 중간에 현재 이미지가 다시 덮어써지는 현상을 막을 수 있다.
  • CCTV는 발견 상태의 변화 시점(none→found)에서만 사운드를 재생하도록 엣지 검출을 쓰는 게 가장 깔끔하다.

🧩 학습하며 겪었던 문제점 & 에러

  • 현상: “슬라이드 먼저, 이미지 교체 나중”으로 보임
    • 재현: 버튼 클릭 시 현재 이미지가 먼저 보이고, 도착 직전에 새 이미지로 바뀜
    • 시도: clickshowpanel() 직후 패널 통일 → 여전히 어색
    • 해결(핵심 코드):
    • // (ArmorySlotView.Step) var cur = candidates[current].prefabInfo?.weaponSprite; var nxt = candidates[next].prefabInfo?.weaponSprite; // 슬라이드 '전'에 from=현재, to=다음 스프라이트 확정 carousel.SlideWithSprites( toRight: delta > 0, fromSprite: cur, toSprite: nxt, onComplete: () => { current = next; // 슬라이드 '후' 확정 SaveLoadoutAndApply(); // 장착 반영 carousel.SetAllSprites(nxt); // 패널 통일 } );
  • 현상: 무기 방(TimeScale=0)에서 트윈이 멈춤
    • 재현: 인벤토리/Armory UI에서 슬라이드 무반응
    • 시도: 기본 DOTween 옵션 유지
    • 해결: 트윈에 SetUpdate(true) 추가
    • fromPanel.DOAnchorPos(offset, dur).SetEase(Ease.OutCubic).SetUpdate(true); toPanel.DOAnchorPos(Vector2.zero, dur).SetEase(Ease.OutCubic).SetUpdate(true);
  • 현상: 이미지가 위로 들러붙음
    • 재현: 스프라이트 교체 시 상단 기준 정렬
    • 해결: 중앙 기준 정렬 고정
    • var r = img.rectTransform; r.anchorMin = r.anchorMax = r.pivot = new Vector2(0.5f, 0.5f); r.anchoredPosition = Vector2.zero; img.preserveAspect = true;
  • 현상: CCTV 사운드가 반복 재생
    • 재현: 추적 중 매 프레임 감지로 효과음 중복
    • 해결: 엣지 검출(없음→있음)에서만 재생
    • var prev = detectedTarget; detectedTarget = head.FindTargetInFOV(...); if (prev == null && detectedTarget != null) StructSoundManager.Instance.PlayCCTVSpottedSound(transform.position);

📝 메모

  • 오늘은 “사용자 입장에서 자연스러운 타이밍”을 코드 구조로 보장하는 게 핵심이었다.
  • 내일은 버튼-방향 매핑을 확실히 고정(OnClickLeft/Right)하고, 썸네일 미리보기(좌/우 패널에 prev/next 미리 칠하기)도 고려해보자.
  • 끝까지 포기 안 하고 잡아낸 날. 내일은 더 매끄럽게 정리한다.

반응형
반응형

🗓️ 오늘 하루 일정

✅ 오전

  • 11:35 ~ 12:30
    • (팀) 스테이지4 미니맵 초안 완료, 카메라 흔들림 조정

🍽️ 점심시간

  • 13:00~14:00 : 점심 식사

✅ 오후

  • 12:35 ~ 13:30
    • (나) Wall/Door/SteelDoor 피격 SFX 추가, 근접공격 SFX 추가
    • (나) Title GIF 자글거림 수정, Store UI 작업 정리
    • (팀) feature/player 병합
  • 13:35 ~ 14:10
    • (나) 프리팹 분리 저장
    • (팀) 인게임 무기 이미지에 현재 무기 반영
  • 15:35 ~ 16:20
    • (팀) 상점 UI 변경, 갈무리체 정상 노출 & Bold 추가
    • (팀) 적 데이터 및 equipWeapon 연동
  • 16:35 ~ 17:30
    • (나) 타이틀 작업(feat 타이틀)
    • (나) Enemy Dialog 고정
    • (팀) 스테이지5 벽/바닥 적용 및 관련 브랜치 병합
  • 17:35 ~ 18:30
    • (팀) Stage4Scene 추가, UI 버튼 사운드 추가
    • (팀) NPC 스테이지 4·5 선택 기능 추가
    • (팀) feature/-bullet → Develop 병합

🍽️ 저녁시간

  • 18:00~19:00

✅ 저녁

  • 19:35 ~ 20:00
    • (팀) LobbyCanvas 오류 수정
  • 20:00 ~ 21:00
    • (팀 회의) 진행 상황 공유 / 액션 아이템 정리
    • 20:17 : (팀) NPC 대사 수정 커밋

✅ 오늘 학습 키워드

UI Toolkit Font Asset 우선순위, unityFontDefinition, TextCore SDF, Physics2D Linecast, 레이어별 SFX 매핑, VideoPlayer(StreamingAssets/RenderTexture)


✅ 오늘 학습 한 내용을 나만의 언어로 정리하기

  • 폰트 적용은 Font Asset이 핵심: unity-font-definition이 unity-font보다 우선 → 갈무리 SDF.asset을 .h1/.paragraph(또는 :root)에 지정해야 확실히 적용.
  • 불릿 사운드는 레이 히트 지점에서: HandleObstacleHit() 시점에 레이어 분기해서 StructSoundManager 호출.
  • 타이틀 영상은 기본 컴포넌트로 충분: StreamingAssets/title.mp4 + VideoPlayer(RenderTexture 출력) + RawImage 전면 배치, isLooping=true.

🧩 학습하며 겪었던 문제점 & 에러

  1. 폰트가 Inter로 고정되는 문제
  • 원인: Theme/다른 USS의 unityFontDefinition이 갈무리를 덮어씀
  • 해결 USS 예시:
:root {
  -unity-font-definition: url("project://database/Assets/Fonts/Galmuri/Galmuri11 SDF.asset");
}
.h1, .paragraph {
  -unity-font-definition: url("project://database/Assets/Fonts/Galmuri/Galmuri11 SDF.asset");
  letter-spacing: 0; word-spacing: 0;
}
  1. 총알 히트 사운드(벽/문/강철문)
  • 핵심: 레이 판정 콜백에서 재생
// Bullet.cs
public partial class Bullet : MonoBehaviour {
    partial void OnBulletObstacleHit(RaycastHit2D hit);
    void HandleObstacleHit(RaycastHit2D hit) {
        OnBulletObstacleHit(hit);
        Destroy(gameObject);
    }
}

// Bullet.Sound.cs
public partial class Bullet {
    partial void OnBulletObstacleHit(RaycastHit2D hit) {
        int L = hit.collider.gameObject.layer;
        var p = hit.point;
        if (L == LayerMask.NameToLayer("Wall"))       StructSoundManager.Instance.PlayWallAttackSound(p);
        else if (L == LayerMask.NameToLayer("Door"))  StructSoundManager.Instance.PlayDoorAttackSound(p);
        else if (L == LayerMask.NameToLayer("SteelDoor")) StructSoundManager.Instance.PlaySteelDoorAttackSound(p);
    }
}
  1. 타이틀 루프 영상(무UI)
vp.source = VideoSource.Url;
vp.url    = System.IO.Path.Combine(Application.streamingAssetsPath, "title.mp4");
vp.renderMode = VideoRenderMode.RenderTexture;
vp.targetTexture = rt; // 1920x1080
vp.isLooping = true;
vp.Prepare();
vp.prepareCompleted += _ => vp.Play();

📝 메모

이제 종강까지 얼마 남지 않았다 나머지 기간도 하루하루 화이팅!!!


반응형
반응형

🗓️ 오늘 하루 일정

✅ 오전

  • 10:00 ~ 12:10 : Blood 프리팹 추가·수정, Stage4 머니스포너/철문/탈출구 배치, Title GIF 적용

🍽️ 점심시간

  • 13:00 ~ 14:00 : 점심

✅ 오후

  • 14:10 ~ 15:10 : 로딩 씬 디자인 변경 & 재업로드, UI 브랜치 머지 정리
  • 15:10 ~ 16:10 : 상점 UI 개편, 무기 등급 데이터 연동, Gun 이미지 픽셀 크기/Point 교체, GunData 재적용
  • 16:10 ~ 16:40 : 총구 위치 오류 수정, 타이틀 마지막 프레임 반짝임 Fix
  • 16:40 ~ 17:10 : 벽/문/철문 & 플레이어 근접공격 사운드 추가·Fix, 에임 조준 시 카메라 크기 조정, 미니맵 라이트 씬 추가, FOW(전장의 안개) 수정, Stage2·3 스테이지 손질, 다수 브랜치 머지

🍽️ 저녁시간

  • 18:00 ~ 19:00 : 저녁

✅ 저녁

  • 20:00 ~ 21:00 : 팀원들과 저녁 스크럼

✅ 오늘 학습 키워드

Title GIF 루프, Blood Decal, LayerMask & 2D Trigger, GunPrefabInfo.firePointOffset 적용, UI Image Preserve Aspect, FOW 튜닝, Aim Zoom


✅ 오늘 학습 한 내용을 나만의 언어로 정리하기

  • 데이터 파이프라인: 원격(Firebase) GunData + 로컬 GunPrefabInfo(SO) 를 합쳐 사용. 수치/메타는 GunData, 에셋·오프셋(아이콘/애니메이터/firePointOffset)은 SO 기준.
  • 총구 위치는 Shooter 생성 후에도 gunPoint 교체 시 재적용 필요 → ApplyFirePointOffset()로 고정.
  • 아이콘 찌부 현상은 UI Image의 Preserve Aspect로 해결(가능하면 Type=Simple).

🧩 학습하며 겪었던 문제점 & 에러

  • 총알 충돌 사운드가 안 울림 (2D/LayerMask 비교 오류)
    • 문제정의: OnTriggerEnter(3D 콜백) + LayerMask == layer 비교로 트리거 미동작.
    • 시도: 충돌 레이어 로그만 찍힘.
    • 해결방법: 2D 콜백으로 변경 + 비트마스크 포함 여부로 비교.
    • 코드:
    • private void OnTriggerEnter2D(Collider2D other) { int mask = 1 << other.gameObject.layer; if ( (wallSoundLayer.value & mask) != 0 ) StructSoundManager.Instance.PlayWallAttackSound(transform.position); else if ( (doorSoundLayer.value & mask) != 0 ) StructSoundManager.Instance.PlayDoorAttackSound(transform.position); else if ( (steelDoorSoundLayer.value & mask) != 0 ) StructSoundManager.Instance.PlaySteelDoorAttackSound(transform.position); }
    • 배운점: 2D 물리는 2D 콜백, LayerMask는 비트 연산으로 판정.
    • 다시 만나면: Physics2D Collision Matrix 먼저 체크 → 콜백/마스크 순으로 검증.
  • firePointOffset이 실제 발사점에 반영되지 않음
    • 문제정의: SO의 오프셋을 넣었지만 Shooter.gunPoint 교체 시 초기 오프셋이 유실.
    • 해결방법: SO 값을 캐시하고 바인딩 직후 재적용.
    • 코드:
    • // Shooter.cs private Vector2? _prefabFireOffset; public void Initialize(GunData gd) { _prefabFireOffset = gd?.prefabInfo != null ? gd.prefabInfo.firePointOffset : (Vector2?)null; ApplyFirePointOffset(); } public void BindGunPoint(Transform t) { gunPoint = t; ApplyFirePointOffset(); } public void ApplyFirePointOffset() { if (gunPoint == null || !_prefabFireOffset.HasValue) return; var o = _prefabFireOffset.Value; gunPoint.localPosition = new Vector3(o.x, o.y, 0f); }
    • 배운점: 데이터 출처는 SO 기준(Firebase 값과 분리). 바인딩 순서에 민감.
    • 다시 만나면: Initialize → Bind → Apply 3단계 보일러플레이트 유지.
  • 상점 아이콘 비율 깨짐
    • 해결: Image.preserveAspect = true + Type=Simple, 필요 시 Compression=None/Low로 선명도 확보.

📝 메모

오늘은 **비주얼(Title GIF, 로딩 씬, 아이콘)**과 전투 감각(사운드, 총구 위치, 에임 카메라, FOW) 를 동시에 끌어올렸다. 특히 데이터 흐름을 다시 정리하면서 “SO가 외형/오프셋의 단일 진실원천”이라는 원칙을 확실히 박아넣은 게 큰 수확. 내일은 Stage 폴리싱과 상점 UX 마지막 마감까지 밀어보자. 한 걸음씩, 꾸준히! ✊


반응형