주요 기능 및 사용 목적
- Virtual Table 및 UI GameObjects:
- Virtual Table: XR 및 MR 환경에서 테이블 인터페이스를 제공하는 가상 오브젝트.
- UI GameObjects: 사용자 인터페이스(UI)를 구성하는 요소.
- Table UI Prefab:
- Table UI 프리팹은 Virtual Table의 모든 UI 요소의 루트입니다.
- 컨텍스트에 따라 특정 메뉴를 활성화하거나 비활성화하는 동적 UI로 설계되었습니다.
메뉴 버튼을 열거나 닫을 때 특정 UI 오브젝트를 표시하거나 숨기는 동작을 관리합니다.
이 스크립트는 사용자 인터페이스(UI) 상태를 동적으로 변경하는 데 사용됩니다.
Player UI Area (Script)
- 메뉴 버튼 상태(열림/닫힘)에 따라 토글될 시각적 요소를 정의합니다.
동적 UI 관리:
메뉴 상태(열림/닫힘)에 따라 특정 UI 요소를 표시하거나 숨깁니다.사용자가 메뉴를 탐색하거나 닫을 때 UI의 전환 효과를 제공합니다.
UI 상태 전환:
Objects To Hide와 Objects To Show를 통해 사용자가 필요로 하는 UI만 표시하여 시각적 혼란을 최소화하고 인터페이스를 간결하게 유지합니다.
사용자 경험 개선:
메뉴가 열리거나 닫힐 때 자연스럽고 명확한 UI 전환을 제공하여 사용자가 쉽게 UI를 탐색할 수 있도록 지원합니다.
Menu Open
- Objects To Hide On Menu Open:
- 메뉴가 열릴 때 숨겨질 오브젝트 목록.
- 현재 설정:
- Expand Icon: 메뉴 확장 아이콘.
- Microphone (Collapsed Background): 축소된 상태의 마이크 UI.
- Objects To Show On Menu Open:
- 메뉴가 열릴 때 표시될 오브젝트 목록.
- 현재 설정:
- Icon: 메뉴 아이콘.
- Panel (Background): 메뉴의 배경 패널.
Menu Close
- Objects To Hide On Menu Close:
- 메뉴가 닫힐 때 숨겨질 오브젝트 목록.
- 현재 설정:
- Icon: 메뉴 아이콘.
- Panel (Background): 메뉴 배경 패널.
- Leave Table (Prompt): 테이블 나가기 프롬프트.
- Quit App (Prompt): 앱 종료 프롬프트.
- GameSelection: 게임 선택 UI.
- Objects To Show On Menu Close:
- 메뉴가 닫힐 때 표시될 오브젝트 목록.
- 현재 설정:
- Expand Icon: 메뉴 확장 아이콘.
- Leave Table Button: 테이블 나가기 버튼.
- Microphone (Collapsed Background): 축소된 상태의 마이크 UI.
Player Options (Script)
- Table UI의 전체적인 관리 및 상호작용을 처리합니다.
- Inspector 창에서 해당 스크립트를 아래로 스크롤하여 찾을 수 있습니다.
주요 설정 설명
- Menu Button Input:
- 메뉴 버튼 입력을 처리합니다.
- 현재 LeftController/Menu 입력 액션이 설정되어 있습니다.
- Mixer:
- 오디오 믹서를 설정합니다. 현재 "Main" 믹서를 사용 중입니다.
- Default Panel:
- 기본적으로 활성화되는 패널을 지정합니다. 현재 패널 번호는 1입니다.
- On Menu Toggle (Boolean):
- 메뉴 토글 이벤트가 발생했을 때 실행되는 동작을 정의합니다.
- 현재 설정:
- PlayerUIArea.MenuToggled 메서드를 호출하여 UI 상태를 변경.
- Table Panel 오브젝트를 활성화하거나 비활성화.
- Panels:
- 메뉴에서 관리되는 패널 목록입니다.
- 주요 패널:
- Main Panel Root: 내비게이션 메뉴.
- Host Room Panel: 호스트 전용 패널.
- Client Room Panel: 클라이언트 전용 패널.
- Leave Table Button: 테이블 나가기 버튼.
Text Components
- 텍스트와 관련된 UI 요소를 관리합니다.
- 주요 텍스트:
- Snap Turn Text: "Snap Turn" 관련 정보를 표시.
- Room Name Text: 방 이름을 표시.
- Room Name Input Field: 방 이름을 입력받는 필드.
Voice Chat
- Mic Perms Button:
- 마이크 권한 요청 버튼.
- Input Volume Slider:
- 입력 볼륨 조정을 위한 슬라이더.
- Output Volume Slider:
- 출력 볼륨 조정을 위한 슬라이더.
- Local Player Audio Visualization:
- 현재 플레이어의 오디오 활동을 시각적으로 표현(예: 마이크 채우기 애니메이션).
- Muted Icon:
- 마이크가 음소거된 상태를 표시하는 아이콘.
- Mic On Icon:
- 마이크가 활성화된 상태를 표시하는 아이콘.
- Voice Chat Status:
- 음성 채팅 상태를 텍스트로 표시(Text Mesh Pro 사용).
Player Options:
- Min Max Move Speed:
- 플레이어 이동 속도의 최소값과 최대값을 설정(X: 2, Y: 20).
- Min Max Turn Amount:
- 플레이어 회전 각도의 최소값과 최대값을 설정(X: 15, Y: 180).
- Snap Turn Update Angle:
- 스냅 턴(빠른 회전) 시 업데이트되는 각도를 설정(현재 15도).
Lobby UI
Lobby UI는 멀티플레이어 로비 환경을 관리하며, 로비 생성, 참여, 목록 표시 등의 기능을 제공합니다.
주요 기능 및 사용 목적:
- 로비 관리:
- 사용자가 로비를 생성하거나 참여할 수 있는 인터페이스를 제공합니다.
- 로비 목록 자동 새로 고침 및 연결 상태를 관리합니다.
- 동적 UI:
- 사용자와 로비 간의 상호작용을 처리하는 버튼, 입력 필드, 토글 등 다양한 UI 요소를 포함합니다.
- 연결 상태 표시:
- 연결 시도, 성공, 실패 상태를 텍스트로 표시하여 사용자 경험을 개선합니다.
- 방 생성 옵션:
- 방 이름 설정 및 공개/비공개 전환 기능 제공.
Inspector 창 (Lobby UI Script)
Lobby List:
- Lobby List Parent:
- 로비 목록이 배치되는 부모 트랜스폼(Content).
- Lobby List Prefab:
- 로비 버튼을 나타내는 프리팹(TableButton_Lobby).
- Auto Refresh Time:
- 로비 목록을 자동으로 새로 고침하는 간격(현재 5초).
- Refresh Cooldown Time:
- 새로 고침 요청 간 최소 간격(현재 0.5초).
Connection Texts:
- 연결 상태를 나타내는 텍스트 필드.
- Connection Update Text: 연결 중 상태 표시.
- Connection Success Text: 연결 성공 상태 표시.
- Connection Failed Text: 연결 실패 상태 표시.
Room Creation:
- Room Name Text:
- 방 이름을 입력받는 필드(XRI InputField 사용).
- Privacy Toggle:
- 방을 공개/비공개로 설정하는 토글.
Connection Sub Panels:
- 연결 상태와 관련된 하위 패널들.
활용 방안:
- Lobby List: 동적으로 로비를 생성하거나 참여하도록 사용자 정의할 수 있습니다.
- Connection Texts: 연결 관련 문제를 디버깅하거나 사용자에게 상태를 알릴 때 활용할 수 있습니다.
- Room Creation: 사용자 맞춤 로비 생성 옵션을 추가하거나 수정할 수 있습니다.
Network Table Top Manager
Network Table Top Manager
- 플레이어를 특정 좌석에 배치하고, 같은 좌석에 두 명 이상의 플레이어가 앉지 않도록 보호합니다.
호출 가능한 메서드:
NetworkTableTopManager.RequestSeat();
이 메서드를 사용해 플레이어가 좌석을 요청하고 배정받을 수 있습니다.
주요 기능 및 사용 목적
- 좌석 관리:
- 플레이어를 특정 좌석에 배치하고 네트워크를 통해 동기화.
- 동일한 좌석에 여러 플레이어가 앉는 상황을 방지.
- 네트워크 동기화:
- 멀티플레이어 환경에서 테이블과 좌석의 상태를 실시간으로 동기화.
- 좌석 요청:
- RequestSeat() 메서드를 호출해 플레이어가 빈 좌석에 앉을 수 있도록 처리.
- UI 통합:
- Seat Buttons와 같은 UI 요소를 활용하여 좌석 선택을 사용자 친화적으로 제공.
Network Object
- 네트워크 오브젝트로, 해당 오브젝트가 멀티플레이어 환경에서 동기화됩니다.
- Synchronize Transform: 위치, 회전, 스케일 등의 동기화를 활성화.
- Spawn With Observers: 관찰자와 함께 스폰.
- Always Replicate As Root:
- 이 옵션이 활성화되면 오브젝트가 항상 네트워크 계층 구조의 루트로 복제됩니다.
- 현재 비활성화되어 있습니다.
- Synchronize Transform:
- 오브젝트의 위치, 회전, 스케일을 네트워크를 통해 동기화합니다.
- 현재 활성화되어 있어 해당 오브젝트의 Transform이 다른 클라이언트와 동기화됩니다.
- Active Scene Synchronization:
- 오브젝트의 활성화 상태를 네트워크 상에서 동기화합니다.
- 현재 비활성화 상태입니다.
- Scene Migration Synchronization:
- 오브젝트가 씬 간에 이동할 때 해당 상태를 동기화합니다.
- 현재 활성화되어 있습니다.
- Spawn With Observers:
- 오브젝트가 관찰 가능한 상태로 생성됩니다.
- 현재 활성화되어 있어 이 오브젝트를 생성한 사용자가 자동으로 관찰자가 됩니다.
- Dont Destroy With Owner:
- 오브젝트 소유자가 제거되더라도 오브젝트가 제거되지 않습니다.
- 현재 비활성화 상태입니다.
- Auto Object Parent Synchronization:
- 부모-자식 관계를 네트워크 상에서 자동으로 동기화합니다.
- 현재 활성화되어 있어 부모 오브젝트와의 관계가 네트워크에서 동기화됩니다.
- Sync Owner Transform:
- 소유자의 Transform 상태를 동기화합니다.
- 현재 활성화되어 있습니다.
- Allow Owner To Parent:
- 소유자가 이 오브젝트의 부모가 될 수 있는지 여부를 설정합니다.
- 현재 비활성화 상태입니다.
- GlobalObjectIdHash:
- 네트워크 오브젝트의 고유 ID입니다. 현재 ID는 1876378851로 설정되어 있습니다.
- NetworkManager:
- 오브젝트가 연결될 네트워크 관리자를 지정합니다.
- 현재 값은 null로 설정되어 있어 특정 네트워크 관리자와 연결되어 있지 않습니다.
멀티플레이어 게임에서 오브젝트의 위치 및 상태 동기화를 구현하고자 할 때 유용합니다.
Spawn With Observers와 Scene Migration Synchronization을 함께 활용해 네트워크 오브젝트의 생성을 동적이고 일관되게 관리할 수 있습니다.
특정 네트워크 관리자(NetworkManager)와 연결되지 않은 경우 추가 설정을 통해 연동을 활성화해야 합니다.
Network Table Top Manager (Script)
멀티플레이어 테이블톱 환경에서 좌석 배치와 관련된 네트워크 기능을 관리하는 역할
주요 기능 및 사용 목적
- 좌석 관리:
- 사용자가 테이블톱 게임에서 특정 좌석을 선택하거나 배정받을 수 있도록 합니다.
- 네트워크를 통해 각 플레이어의 좌석 상태를 동기화하여 중복 배정을 방지합니다.
- Seat Buttons:
- 사용자가 선택 가능한 좌석을 나타내는 UI 요소입니다.
- 버튼을 통해 플레이어가 좌석 요청 및 배정을 수행할 수 있습니다.
- Table System 연동:
- 테이블 시스템과 좌석 시스템 간의 연결을 관리하여 테이블 상태 및 좌석 정보를 유지합니다.
좌석 커스터마이징: Seat Buttons를 조정하여 좌석의 수를 늘리거나 줄일 수 있습니다.다양한 좌석 옵션을 추가하거나 버튼 디자인을 커스터마이징하여 사용자 경험을 향상시킬 수 있습니다.
네트워크 동기화: 멀티플레이어 환경에서 좌석 상태를 모든 클라이언트에 실시간으로 동기화합니다.좌석 요청이 들어올 때마다 Networked Seats와 연동해 관리합니다.
사용자 지정 로직 추가: 특정 조건에서 좌석을 활성화하거나 비활성화하는 추가 로직을 구현할 수 있습니다.예를 들어, "특정 좌석은 호스트 전용으로 설정"하거나 "플레이어 수 제한" 기능을 추가할 수 있습니다.
- Networked Seats:
- 네트워크 좌석 시스템을 관리.
- Seat System:
- TableSystem(Table Seat System) 오브젝트가 연결되어 좌석과 관련된 데이터를 관리합니다.
- Table Top:
- TableTop 오브젝트와 연결되어 테이블 관련 작업을 처리합니다.
- Seat Buttons:
- 좌석 버튼 수. 현재 설정된 버튼 수는 4입니다.