This document is about: FUSION 1
SWITCH TO

수정중인 페이지 입니다.

오디오 룸


Available in the Industries Circle
Circle
Fusion Industries prototyping Addons

AudioRoom

경우에 따라 플레이어 사이의 거리에 관계없이 플레이어를 서로 다른 오디오 "룸"으로 나누는 것이 유용할 수 있습니다.
이는 문으로 인해 룸이 고립된 경우 같은 오디오 룸에 있는 플레이어만 서로 대화할 수 있음을 의미합니다. 이를 위해 4가지 클래스를 제공합니다:

  • AudioRoomManager
  • AudioRoom
  • AudioRoomMember
  • AudioDoor

AudioRoomManager

AudioRoomManager는 현장에 있는 룸과 플레이어 목록을 관리합니다.

MatchingRooms() 메소드는 플레이어가 매 동작 후 자신이 위치한 방의 목록을 가져오기 위해 호출합니다(방이 서로 겹칠 수 있음을 유의하십시오).

AudioRoom

오디오 룸은 AudioRoom 컴포넌트로 정의됩니다.
룸의 공간 위치는 중심점과 박스로 설정됩니다(기즈모 큐브가 씬 뷰에 표시).
AudioRoom은 특정 Id가 있으며, Awake() 중에 AudioRoomManager에 등록합니다.

IsIsolated 부울 변수는 문 때문에 룸 안에 있는 플레이어들이 다른 플레이어들로부터 고립되는지를 정의하는 데 사용됩니다.
룸과 관련된 문이 움직이면 Isolate() 메소드가 (AudioDoor로) 호출되어 플레이어가 룸 안에 있는지 확인하고 OnCurrentRoomIsolationChange() 메소드로 오디오 그룹 필터링 업데이트를 요청합니다.

AudioRoomMember

각 네트워크 플레이어 프리팹엔느 AudioRoomMember 클래스가 있으므AudioRoomMember는 사용자가 다른 룸으로 이동했는지 확인합니다.
그런 다음 룸 상태(격리 여부)에 따라 오디오 그룹(DynamicAudioGroupMember)을 설정합니다.

AudioDoor

AudioDoor 클래스는 오디오 룸을 구분하는 도어 게임 객체에 추가해야 합니다.

ToogleDoor()Open() 공개 메소드 덕분에 문이 열리거나 닫힐 수 있습니다.
문을 열고 닫을 권한이 없는 플레이어는 상태 권한에 RPC를 보냅니다.

C#

    public void ToogleDoor()
    {
        Open(!IsOpened);
    }

    public void Open(bool isOpen)
    {
        if (Object.HasStateAuthority)
        {
            IsOpened = isOpen;
        }
        else
        {
            RPC_Open(isOpen);
        }
    }

    [Rpc(sources:RpcSources.All, targets: RpcTargets.StateAuthority)]
    public void RPC_Open(bool isOpen)
    {
        IsOpened = isOpen;
    }

문 상태(열림 또는 닫힘)은 네트워크 부울 변수인 IsOpened를 통해 네트워크에서 동기화됩니다.
OnIsOpenedChange() 메소드는 IsOpened이 변경될 때 호출됩니다.

C#

[Networked(OnChanged = nameof(OnIsOpenedChange))]
public NetworkBool IsOpened { get; set; } = true;

static void OnIsOpenedChange(Changed<AudioDoor> changed)
{
    changed.Behaviour.OnIsOpenedChange();
}

OnIsOpenedChange() 메소드는 문으로 분리된 룸의 격리 상태를 변경합니다.
그런 다음 룸은 룸에 위치한 플레이어에게 격리 상태를 알려줍니다. 즉, 룸이 격리된 경우 DynamicAudioGroupMemberadditionalGroupFilterroomId로 설정됩니다.
이러한 방식으로, 룸에 있는 플레이어는 정의된 거리 제한 내에 있는 경우에도 룸 구성원의 말만 듣고 다른 플레이어의 말은 듣지 않습니다.

OnStatusChange() 이벤트는 도어 상태가 변경되었을 때 생성됩니다.

의존성

Dynamic Audio Group 버전 1.0.0

다운로드

이 애드온의 최신 버전은 애드온 프로젝트에 포함되어 있습니다.

지원하는 토폴로지

  • 공유 모드
  • 호스트 모드

변경 내역

  • 버전 1.0.0 (2023/07/06) : 최초 릴리즈
Back to top