티스토리 뷰
01.12
- 타이틀씬 완성
- 게임 시작하기 버튼 누르면 다음 ConnectScene으로 이동함. TitleUI 스크립트에서 SceneManager.LoadScene("ConnectScene"); 이용
- 배경 및 버튼들 UI 프리팹화함.
- 게임 방법 버튼은 아직 안함.

1월 13, 14일
요약:
- 작업: 방 만들기/참여 필수 UI 배치, ConnectSceneManager 스크립트 작성, 버튼-Inspector 레퍼런스 연결
- 검증: 중간 빌드로 Room List 생성 확인 시도 → RoomItem 생성 안 됨
- 이슈 원인: NetworkManager → ConnectSceneManager로 리네임하면서 씬 오브젝트 인스펙터 레퍼런스들이 초기화/미연결 상태
- 해결: 인스펙터 레퍼런스 전부 재연결 후 정상 작동 확인
- 메모(협업): 인스펙터 연결 누락 시 RoomList/UI 갱신이 안 될 수 있음(씬 오브젝트 참조 확인 필요)
1월 15일
- 테스트: 방 생성자 + 참여자 버튼으로 같은 룸 입장되는지 확인 → 성공
- PlayerList 확인: 임시 Scene_Lobby에 Text로 출력, Unity 실행/빌드 둘 다 입장 확인
구체:
- Scene_Connect 방 만들기, 방 참여하기 에 필요한 필수 UI들 배치
- ConnectSceneManager 스크립트 작성, 각 버튼에 필요한 Inspector들 연결
중간 빌드해서 룸 리스트 생기는지 확인->안 생김, 실패.

- 원인 찾음(NetworkManager -> ConnectSceneManager로 이름 바꾸면서 초기화된 이 오브젝트의 인스펙터에 다 연결이 안됐던 것..!ㅠㅠ) 인스펙터 다 연결 후 정상 작동.
- (의문점: 과연 인스펙터에 연결시키는 것들이 많아도 협업하는데 괜찮을지...? 혹시나 깃에서 머지할 때 충돌이라도 나면 일일이 다 연결시켜야 하는 건 아닌지(On Click() 함수 등) 걱정이 생김...)
- 일단 프리팹화하는 식으로 해결하고, 코드에서 인스펙터 연결을 대신하도록 만들기.

- 방 만든 사람과 갱신된 룸리스트에서 참여하기 버튼 누른 사람 한 방에 들어오는지 테스트 -> 확인
- 임시로 만든 Scene_Lobby에 Text 오브젝트 붙여서 PlayerList에 Unity쪽, build쪽 모두 들어온 것 확인

1월 16일
요약 : 현재까지 짜놓은 구조는 버튼마다의 OnClick()이 매니저를 직접 물고 있다.
→ 지피티에게 물어보니 협업/유지보수 편하게 하려면 버튼 바인딩을 코드에서 하는 쪽이 안전하다고 한다.
→ 버튼 이벤트를 코드 바인딩으로 바꾸기로 함.
- ConnectUIRoot 에 붙일 ConnectUIBinder 스크립트 작성 및 붙이기
ConnectUIBinder
using UnityEngine;
using UnityEngine.UI;
public class ConnectUIBinder : MonoBehaviour
{
[Header("NickName")]
public InputField nickNameInput;
[Header("Top Buttons")]
public Button btnBack;
public Button btnSettings;
[Header("Start")]
public Button btnStart;
[Header("Create Room Buttons")]
public Button btnCreateRoom;
public Button btnPublic;
public Button btnPrivate;
[Header("Create Room Popup")]
public GameObject createRoomPopup;
public InputField roomNameInput;
public Button btnConfirm;
public Button btnCancel;
[Header("Room List")]
public Transform roomListParent; //Content. Scroll View / Viewport / Content
GameObject roomItemPrefab; //RoomItem prefab
}
인스펙터에 붙이는 것을 캔버스 하위에서 모두 모아볼 수 있도록 만들었다.

1월 19일
늦게 접속한 유저에게 룸 리스트가 보이지 않던 문제 수정
- 원인: RefreshRoomListUI()가 특정 조건(IF문) 하에서만 호출되고 있었음
- 해결:
- RefreshRoomListUI()를 조건문 없이
- OnEnable()에서 항상 호출하도록 구조 변경
- 결과:
- 씬이 활성화될 때마다 룸 리스트가 정상적으로 갱신됨
- 늦게 접속한 유저도 기존 방 목록을 문제없이 확인 가능
- ConnectSceneManager.cs - OnEnable() 함수 부분
//오브젝트가 활성화될 때마다 호출(씬 진입, SetActive(true) 등)
private void OnEnable()
{
//디버깅용
if (NetworkManager.Instance == null)
{
Debug.LogWarning("[UI] NetworkManager.Instance is null on OnEnable");
return;
}
// 중복 구독 방지
NetworkManager.Instance.OnRoomListChanged -= RefreshRoomListUI;
NetworkManager.Instance.OnRoomListChanged += RefreshRoomListUI;
//이미 캐시에 방이 있으면 즉시 UI에 반영 <- 늦게 들어오면 안 보이는 오류 해결
RefreshRoomListUI();
}
'개인 프로젝트 > BlackOut' 카테고리의 다른 글
| [Unity] 게임 프로젝트 작업 기록 : 접속씬에서 비공개방 만들기 (0) | 2026.02.26 |
|---|---|
| [Unity] 3주차 작업 로그 : 시야 연출 (Sight System) (0) | 2026.02.25 |
| [Unity] 2주차 작업 로그 : 상호작용 시스템 (Interaction) (0) | 2026.02.25 |
| [Unity] 게임 프로젝트 작업 기록 : Photon PUN2 기반 접속씬 구현 (1) | 2026.02.24 |
