浏览代码

Vivox Support for Lobby and Relay merge

/main/staging
当前提交
c7e353aa
共有 37 个文件被更改,包括 1107 次插入1626 次删除
  1. 14
      Assets/Art/Crown/Crown.png.meta
  2. 14
      Assets/Art/Volume/volumeRings.png.meta
  3. 14
      Assets/Art/Volume/volumeSpeaker.png.meta
  4. 303
      Assets/Prefabs/UI/GameCanvas.prefab
  5. 398
      Assets/Prefabs/UI/JoinContent.prefab
  6. 46
      Assets/Prefabs/UI/JoinCreateCanvas.prefab
  7. 6
      Assets/Prefabs/UI/LobbyCodeCanvas.prefab
  8. 6
      Assets/Prefabs/UI/LobbyGameCanvas.prefab
  9. 12
      Assets/Prefabs/UI/LobbyUserList.prefab
  10. 11
      Assets/Prefabs/UI/MainMenuCanvas.prefab
  11. 2
      Assets/Prefabs/UI/RenamePopup.prefab
  12. 153
      Assets/Prefabs/UI/UserCardPanel.prefab
  13. 832
      Assets/Scenes/mainScene.unity
  14. 23
      Assets/Scripts/Game/GameManager.cs
  15. 51
      Assets/Scripts/Game/LobbyUser.cs
  16. 13
      Assets/Scripts/Game/LobbyUserAudio.cs
  17. 4
      Assets/Scripts/LobbyRelaySample.asmdef
  18. 35
      Assets/Scripts/UI/InLobbyUserUI.cs
  19. 47
      Assets/Scripts/UI/LobbyUserVolumeUI.cs
  20. 3
      Packages/manifest.json
  21. 18
      Packages/packages-lock.json
  22. 12
      Assets/Art/Volume/micIcon.png
  23. 96
      Assets/Art/Volume/micIcon.png.meta
  24. 29
      Assets/Art/Volume/mutedIcon.png
  25. 8
      Assets/Scripts/Vivox.meta
  26. 11
      Assets/Scripts/Vivox/VivoxSetup.cs.meta
  27. 11
      Assets/Scripts/Vivox/VivoxUserHandler.cs.meta
  28. 101
      Assets/Scripts/Vivox/VivoxSetup.cs
  29. 161
      Assets/Scripts/Vivox/VivoxUserHandler.cs
  30. 38
      ProjectSettings/Packages/com.unity.services.vivox/Settings.json
  31. 121
      Assets/Art/Volume/volumeMuted.png
  32. 96
      Assets/Art/Volume/volumeMuted.png.meta
  33. 33
      Assets/Scripts/UI/MuteUI.cs
  34. 11
      Assets/Scripts/UI/MuteUI.cs.meta

14
Assets/Art/Crown/Crown.png.meta


serializedVersion: 11
mipmaps:
mipMapMode: 0
enableMipMap: 0
enableMipMap: 1
sRGBTexture: 1
linearTexture: 0
fadeOut: 0

platformSettings:
- serializedVersion: 3
buildTarget: DefaultTexturePlatform
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 3
buildTarget: Standalone
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1

14
Assets/Art/Volume/volumeRings.png.meta


serializedVersion: 11
mipmaps:
mipMapMode: 0
enableMipMap: 0
enableMipMap: 1
sRGBTexture: 1
linearTexture: 0
fadeOut: 0

platformSettings:
- serializedVersion: 3
buildTarget: DefaultTexturePlatform
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 3
buildTarget: Standalone
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1

14
Assets/Art/Volume/volumeSpeaker.png.meta


serializedVersion: 11
mipmaps:
mipMapMode: 0
enableMipMap: 0
enableMipMap: 1
sRGBTexture: 1
linearTexture: 0
fadeOut: 0

platformSettings:
- serializedVersion: 3
buildTarget: DefaultTexturePlatform
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 3
buildTarget: Standalone
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1

303
Assets/Prefabs/UI/GameCanvas.prefab


m_RootOrder: 1
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 1}
m_AnchorMax: {x: 0, y: 1}
m_AnchoredPosition: {x: 400, y: -15.6991205}
m_SizeDelta: {x: 800, y: 31.398241}
m_Pivot: {x: 0.5, y: 0.5}
m_AnchorMax: {x: 1, y: 1}
m_AnchoredPosition: {x: 0, y: 0}
m_SizeDelta: {x: 0, y: 50}
m_Pivot: {x: 0.5, y: 1}
--- !u!222 &2637199315522059504
CanvasRenderer:
m_ObjectHideFlags: 0

m_Name:
m_EditorClassIdentifier:
m_Padding:
m_Left: 0
m_Right: 0
m_Top: 0
m_Bottom: 0
m_Left: 5
m_Right: 5
m_Top: 5
m_Bottom: 5
m_Spacing: 0
m_Spacing: 5
m_ChildForceExpandWidth: 1
m_ChildForceExpandHeight: 1
m_ChildControlWidth: 1

m_Children:
- {fileID: 2637199316546086228}
- {fileID: 5992334104032192704}
- {fileID: 7914629187891855367}
m_Father: {fileID: 2637199315671523625}
m_RootOrder: 3
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}

m_SizeDelta: {x: 0, y: -75}
m_SizeDelta: {x: -30, y: -75}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!1 &2637199316888954224
GameObject:

propertyPath: m_AnchoredPosition.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 7663265756039998349, guid: 1ba83780824e3074a9e835b4d5811b49, type: 3}
propertyPath: m_Alpha
value: 0
objectReference: {fileID: 0}
- target: {fileID: 8624457953394683845, guid: 1ba83780824e3074a9e835b4d5811b49, type: 3}
propertyPath: m_Name
value: RenamePopup

objectReference: {fileID: 0}
- target: {fileID: 8624457953394683849, guid: 1ba83780824e3074a9e835b4d5811b49, type: 3}
propertyPath: m_AnchoredPosition.x
value: 49.599976
value: 0
value: -3.2999878
value: 0
objectReference: {fileID: 0}
- target: {fileID: 8624457953394683849, guid: 1ba83780824e3074a9e835b4d5811b49, type: 3}
propertyPath: m_LocalEulerAnglesHint.x

m_CorrespondingSourceObject: {fileID: 8624457953394683849, guid: 1ba83780824e3074a9e835b4d5811b49, type: 3}
m_PrefabInstance: {fileID: 2637199315632506633}
m_PrefabAsset: {fileID: 0}
--- !u!114 &8727371508936804372 stripped
MonoBehaviour:
m_CorrespondingSourceObject: {fileID: 6738771439990001437, guid: 1ba83780824e3074a9e835b4d5811b49, type: 3}
m_PrefabInstance: {fileID: 2637199315632506633}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 0}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 160dfc78f3641c94fbebe419be087996, type: 3}
m_Name:
m_EditorClassIdentifier:
--- !u!1001 &2637199316860760290
PrefabInstance:
m_ObjectHideFlags: 0

propertyPath: m_AnchoredPosition.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 5151938374126251259, guid: 0828349f6319d084bbba8edd08991e62, type: 3}
propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_Target
value:
objectReference: {fileID: 8727371508936804372}
- target: {fileID: 5151938374126251259, guid: 0828349f6319d084bbba8edd08991e62, type: 3}
propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_MethodName
value: Show
objectReference: {fileID: 0}
- target: {fileID: 5151938374672746532, guid: 0828349f6319d084bbba8edd08991e62, type: 3}
propertyPath: m_AnchorMax.y
value: 0

propertyPath: m_AnchoredPosition.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 5151938374672746535, guid: 0828349f6319d084bbba8edd08991e62, type: 3}
propertyPath: m_fontSize
value: 35.8
objectReference: {fileID: 0}
value: 10
value: 9.95
objectReference: {fileID: 0}
- target: {fileID: 5151938375108891013, guid: 0828349f6319d084bbba8edd08991e62, type: 3}
propertyPath: m_Pivot.x

value: 0
objectReference: {fileID: 0}
- target: {fileID: 1547097154637997990, guid: 65b3782fa4600fa4385f4eea3edd9865, type: 3}
propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.size
value: 2
objectReference: {fileID: 0}
- target: {fileID: 1547097154637997990, guid: 65b3782fa4600fa4385f4eea3edd9865, type: 3}
propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_Mode
value: 6
objectReference: {fileID: 0}

propertyPath: m_AnchoredPosition.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 1899106514249388054, guid: 247f79ab5aefc6d40bcbdade4d9467b7, type: 3}
propertyPath: m_fontColor.b
value: 0.8113208
objectReference: {fileID: 0}
- target: {fileID: 1899106514249388054, guid: 247f79ab5aefc6d40bcbdade4d9467b7, type: 3}
propertyPath: m_fontColor.g
value: 0.8113208
objectReference: {fileID: 0}
- target: {fileID: 1899106514249388054, guid: 247f79ab5aefc6d40bcbdade4d9467b7, type: 3}
propertyPath: m_fontColor.r
value: 0.8113208
objectReference: {fileID: 0}
- target: {fileID: 1899106514249388054, guid: 247f79ab5aefc6d40bcbdade4d9467b7, type: 3}
propertyPath: m_fontColor32.rgba
value: 4291809231
objectReference: {fileID: 0}
- target: {fileID: 1931419862822583626, guid: 247f79ab5aefc6d40bcbdade4d9467b7, type: 3}
propertyPath: m_fontSize
value: 21

objectReference: {fileID: 0}
- target: {fileID: 2244251207921394025, guid: 247f79ab5aefc6d40bcbdade4d9467b7, type: 3}
propertyPath: m_SizeDelta.x
value: -100
value: 0
value: -150
value: 0
objectReference: {fileID: 0}
- target: {fileID: 2244251207921394025, guid: 247f79ab5aefc6d40bcbdade4d9467b7, type: 3}
propertyPath: m_LocalPosition.x

objectReference: {fileID: 0}
- target: {fileID: 3335058099760921612, guid: 247f79ab5aefc6d40bcbdade4d9467b7, type: 3}
propertyPath: m_fontSize
value: 13.6
value: 14.9
objectReference: {fileID: 0}
- target: {fileID: 3555826569960258679, guid: 247f79ab5aefc6d40bcbdade4d9467b7, type: 3}
propertyPath: m_AnchorMax.y

objectReference: {fileID: 0}
- target: {fileID: 4675500381921915110, guid: 247f79ab5aefc6d40bcbdade4d9467b7, type: 3}
propertyPath: m_AnchorMax.y
value: 0
value: 1
objectReference: {fileID: 0}
- target: {fileID: 4675500381921915110, guid: 247f79ab5aefc6d40bcbdade4d9467b7, type: 3}
propertyPath: m_AnchorMin.y

propertyPath: m_SizeDelta.y
value: 0
value: -20
objectReference: {fileID: 0}
- target: {fileID: 4675500381921915110, guid: 247f79ab5aefc6d40bcbdade4d9467b7, type: 3}
propertyPath: m_AnchoredPosition.x

objectReference: {fileID: 0}
- target: {fileID: 6281383251298602143, guid: 247f79ab5aefc6d40bcbdade4d9467b7, type: 3}
propertyPath: m_fontSize
value: 18
value: 22.35
objectReference: {fileID: 0}
- target: {fileID: 6391714119483450492, guid: 247f79ab5aefc6d40bcbdade4d9467b7, type: 3}
propertyPath: m_AnchorMax.y

m_CorrespondingSourceObject: {fileID: 2244251207921394025, guid: 247f79ab5aefc6d40bcbdade4d9467b7, type: 3}
m_PrefabInstance: {fileID: 4304342123904612290}
m_PrefabAsset: {fileID: 0}
--- !u!1001 &4940523059930614354
PrefabInstance:
m_ObjectHideFlags: 0
serializedVersion: 2
m_Modification:
m_TransformParent: {fileID: 2637199316291327119}
m_Modifications:
- target: {fileID: 2974111728825125461, guid: 79d6084439b78bb4eaf5232cb953fd87, type: 3}
propertyPath: m_Pivot.x
value: 0.5
objectReference: {fileID: 0}
- target: {fileID: 2974111728825125461, guid: 79d6084439b78bb4eaf5232cb953fd87, type: 3}
propertyPath: m_Pivot.y
value: 0.5
objectReference: {fileID: 0}
- target: {fileID: 2974111728825125461, guid: 79d6084439b78bb4eaf5232cb953fd87, type: 3}
propertyPath: m_RootOrder
value: 3
objectReference: {fileID: 0}
- target: {fileID: 2974111728825125461, guid: 79d6084439b78bb4eaf5232cb953fd87, type: 3}
propertyPath: m_AnchorMax.x
value: 1
objectReference: {fileID: 0}
- target: {fileID: 2974111728825125461, guid: 79d6084439b78bb4eaf5232cb953fd87, type: 3}
propertyPath: m_AnchorMax.y
value: 1
objectReference: {fileID: 0}
- target: {fileID: 2974111728825125461, guid: 79d6084439b78bb4eaf5232cb953fd87, type: 3}
propertyPath: m_AnchorMin.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 2974111728825125461, guid: 79d6084439b78bb4eaf5232cb953fd87, type: 3}
propertyPath: m_AnchorMin.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 2974111728825125461, guid: 79d6084439b78bb4eaf5232cb953fd87, type: 3}
propertyPath: m_SizeDelta.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 2974111728825125461, guid: 79d6084439b78bb4eaf5232cb953fd87, type: 3}
propertyPath: m_SizeDelta.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 2974111728825125461, guid: 79d6084439b78bb4eaf5232cb953fd87, type: 3}
propertyPath: m_LocalPosition.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 2974111728825125461, guid: 79d6084439b78bb4eaf5232cb953fd87, type: 3}
propertyPath: m_LocalPosition.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 2974111728825125461, guid: 79d6084439b78bb4eaf5232cb953fd87, type: 3}
propertyPath: m_LocalPosition.z
value: 0
objectReference: {fileID: 0}
- target: {fileID: 2974111728825125461, guid: 79d6084439b78bb4eaf5232cb953fd87, type: 3}
propertyPath: m_LocalRotation.w
value: 1
objectReference: {fileID: 0}
- target: {fileID: 2974111728825125461, guid: 79d6084439b78bb4eaf5232cb953fd87, type: 3}
propertyPath: m_LocalRotation.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 2974111728825125461, guid: 79d6084439b78bb4eaf5232cb953fd87, type: 3}
propertyPath: m_LocalRotation.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 2974111728825125461, guid: 79d6084439b78bb4eaf5232cb953fd87, type: 3}
propertyPath: m_LocalRotation.z
value: 0
objectReference: {fileID: 0}
- target: {fileID: 2974111728825125461, guid: 79d6084439b78bb4eaf5232cb953fd87, type: 3}
propertyPath: m_AnchoredPosition.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 2974111728825125461, guid: 79d6084439b78bb4eaf5232cb953fd87, type: 3}
propertyPath: m_AnchoredPosition.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 2974111728825125461, guid: 79d6084439b78bb4eaf5232cb953fd87, type: 3}
propertyPath: m_LocalEulerAnglesHint.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 2974111728825125461, guid: 79d6084439b78bb4eaf5232cb953fd87, type: 3}
propertyPath: m_LocalEulerAnglesHint.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 2974111728825125461, guid: 79d6084439b78bb4eaf5232cb953fd87, type: 3}
propertyPath: m_LocalEulerAnglesHint.z
value: 0
objectReference: {fileID: 0}
- target: {fileID: 2974111728825125462, guid: 79d6084439b78bb4eaf5232cb953fd87, type: 3}
propertyPath: m_Name
value: PopUpUI
objectReference: {fileID: 0}
m_RemovedComponents: []
m_SourcePrefab: {fileID: 100100000, guid: 79d6084439b78bb4eaf5232cb953fd87, type: 3}
--- !u!224 &7914629187891855367 stripped
RectTransform:
m_CorrespondingSourceObject: {fileID: 2974111728825125461, guid: 79d6084439b78bb4eaf5232cb953fd87, type: 3}
m_PrefabInstance: {fileID: 4940523059930614354}
--- !u!114 &7695022432396603176 stripped
MonoBehaviour:
m_CorrespondingSourceObject: {fileID: 5869930269783152874, guid: 247f79ab5aefc6d40bcbdade4d9467b7, type: 3}
m_PrefabInstance: {fileID: 4304342123904612290}
m_GameObject: {fileID: 0}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 9085046f02f69544eb97fd06b6048fe2, type: 3}
m_Name:
m_EditorClassIdentifier:
--- !u!1001 &8387645425390731067
PrefabInstance:
m_ObjectHideFlags: 0

m_Modifications:
- target: {fileID: 66823810940833564, guid: 404728f5cffe43940b290121bd31f601, type: 3}
propertyPath: m_fontSize
value: 35.8
objectReference: {fileID: 0}
- target: {fileID: 374782365913103796, guid: 404728f5cffe43940b290121bd31f601, type: 3}
propertyPath: m_AnchorMax.y
value: 0

objectReference: {fileID: 0}
- target: {fileID: 2828520451782533824, guid: 404728f5cffe43940b290121bd31f601, type: 3}
propertyPath: m_Value
value: 1
value: 0
objectReference: {fileID: 0}
- target: {fileID: 2916252825812523934, guid: 404728f5cffe43940b290121bd31f601, type: 3}
propertyPath: m_AnchorMax.y

- target: {fileID: 2916252825812523934, guid: 404728f5cffe43940b290121bd31f601, type: 3}
propertyPath: m_AnchoredPosition.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 2994611497005398738, guid: 404728f5cffe43940b290121bd31f601, type: 3}
propertyPath: m_Color.b
value: 0.7264151
objectReference: {fileID: 0}
- target: {fileID: 2994611497005398738, guid: 404728f5cffe43940b290121bd31f601, type: 3}
propertyPath: m_Color.g
value: 0.7264151
objectReference: {fileID: 0}
- target: {fileID: 2994611497005398738, guid: 404728f5cffe43940b290121bd31f601, type: 3}
propertyPath: m_Color.r
value: 0.7264151
objectReference: {fileID: 0}
- target: {fileID: 2997103516229940499, guid: 404728f5cffe43940b290121bd31f601, type: 3}
propertyPath: m_AnchorMax.y

propertyPath: m_Value
value: 1
objectReference: {fileID: 0}
- target: {fileID: 3638764283281205412, guid: 404728f5cffe43940b290121bd31f601, type: 3}
propertyPath: m_Value
value: 1
objectReference: {fileID: 0}
- target: {fileID: 3675426980811071808, guid: 404728f5cffe43940b290121bd31f601, type: 3}
propertyPath: m_AnchorMax.x
value: 0

value: 0
objectReference: {fileID: 0}
- target: {fileID: 3930986831690407628, guid: 404728f5cffe43940b290121bd31f601, type: 3}
propertyPath: m_SizeDelta.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 3930986831690407628, guid: 404728f5cffe43940b290121bd31f601, type: 3}
value: -0.000023841858
value: -0.00002169609
value: 0.000011920929
value: -0.00014418407
objectReference: {fileID: 0}
- target: {fileID: 4583769822633113396, guid: 404728f5cffe43940b290121bd31f601, type: 3}
propertyPath: m_AnchorMax.x

propertyPath: m_AnchorMin.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 4819502806374738528, guid: 404728f5cffe43940b290121bd31f601, type: 3}
propertyPath: m_Color.b
value: 0.7254902
objectReference: {fileID: 0}
- target: {fileID: 4819502806374738528, guid: 404728f5cffe43940b290121bd31f601, type: 3}
propertyPath: m_Color.g
value: 0.7254902
objectReference: {fileID: 0}
- target: {fileID: 4819502806374738528, guid: 404728f5cffe43940b290121bd31f601, type: 3}
propertyPath: m_Color.r
value: 0.7254902
objectReference: {fileID: 0}
- target: {fileID: 5501335554188863604, guid: 404728f5cffe43940b290121bd31f601, type: 3}
propertyPath: m_AnchorMax.x
value: 0

value: 0
objectReference: {fileID: 0}
- target: {fileID: 5627606144542056122, guid: 404728f5cffe43940b290121bd31f601, type: 3}
propertyPath: onValueChanged.m_PersistentCalls.m_Calls.Array.data[0].m_Target
value:
objectReference: {fileID: 0}
- target: {fileID: 5627606144542056122, guid: 404728f5cffe43940b290121bd31f601, type: 3}
propertyPath: onValueChanged.m_PersistentCalls.m_Calls.Array.data[0].m_MethodName
value: SetLobbyColorFilter
objectReference: {fileID: 0}
- target: {fileID: 5627606144542056122, guid: 404728f5cffe43940b290121bd31f601, type: 3}
propertyPath: onValueChanged.m_PersistentCalls.m_Calls.Array.data[0].m_TargetAssemblyTypeName
value: LobbyRelaySample.GameStateManager, LobbyRelaySample
objectReference: {fileID: 0}
- target: {fileID: 5627606144542056122, guid: 404728f5cffe43940b290121bd31f601, type: 3}
propertyPath: onValueChanged.m_PersistentCalls.m_Calls.Array.data[0].m_Arguments.m_IntArgument
value: 0
objectReference: {fileID: 0}
- target: {fileID: 5836614391142406753, guid: 404728f5cffe43940b290121bd31f601, type: 3}

propertyPath: m_AnchoredPosition.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 7271570862462060088, guid: 404728f5cffe43940b290121bd31f601, type: 3}
propertyPath: m_Alpha
value: 0
objectReference: {fileID: 0}
- target: {fileID: 7271570862462060088, guid: 404728f5cffe43940b290121bd31f601, type: 3}
propertyPath: m_Interactable
value: 0
objectReference: {fileID: 0}
- target: {fileID: 7271570862462060088, guid: 404728f5cffe43940b290121bd31f601, type: 3}
propertyPath: m_BlocksRaycasts
value: 0
objectReference: {fileID: 0}
- target: {fileID: 7740039041832197722, guid: 404728f5cffe43940b290121bd31f601, type: 3}
propertyPath: m_AnchorMax.y
value: 0

objectReference: {fileID: 0}
- target: {fileID: 8314627591180998490, guid: 404728f5cffe43940b290121bd31f601, type: 3}
propertyPath: m_fontSize
value: 30.2
value: 30.25
objectReference: {fileID: 0}
- target: {fileID: 8437021287377131492, guid: 404728f5cffe43940b290121bd31f601, type: 3}
propertyPath: m_AnchorMax.y

objectReference: {fileID: 0}
- target: {fileID: 8502326957445156609, guid: 404728f5cffe43940b290121bd31f601, type: 3}
propertyPath: m_fontSize
value: 30.2
value: 30.25
objectReference: {fileID: 0}
- target: {fileID: 8636295960037856115, guid: 404728f5cffe43940b290121bd31f601, type: 3}
propertyPath: m_AnchorMax.y

- target: {fileID: 3548897939371032169, guid: 6188f40319e07fb4dbf579316ddcebb9, type: 3}
propertyPath: m_BlocksRaycasts
value: 0
objectReference: {fileID: 0}
- target: {fileID: 4397127860225584906, guid: 6188f40319e07fb4dbf579316ddcebb9, type: 3}
propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.size
value: 2
objectReference: {fileID: 0}
- target: {fileID: 4397127860225584906, guid: 6188f40319e07fb4dbf579316ddcebb9, type: 3}
propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_Mode
value: 6
objectReference: {fileID: 0}
- target: {fileID: 4397127860225584906, guid: 6188f40319e07fb4dbf579316ddcebb9, type: 3}
propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_Target
value:
objectReference: {fileID: 7695022432396603176}
- target: {fileID: 4397127860225584906, guid: 6188f40319e07fb4dbf579316ddcebb9, type: 3}
propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_CallState
value: 2
objectReference: {fileID: 0}
- target: {fileID: 4397127860225584906, guid: 6188f40319e07fb4dbf579316ddcebb9, type: 3}
propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_MethodName
value: set_isOn
objectReference: {fileID: 0}
- target: {fileID: 4397127860225584906, guid: 6188f40319e07fb4dbf579316ddcebb9, type: 3}
propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_TargetAssemblyTypeName
value: UnityEngine.UI.Toggle, UnityEngine.UI
objectReference: {fileID: 0}
- target: {fileID: 4397127860225584906, guid: 6188f40319e07fb4dbf579316ddcebb9, type: 3}
propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_Arguments.m_BoolArgument
value: 1
objectReference: {fileID: 0}
- target: {fileID: 4397127860225584906, guid: 6188f40319e07fb4dbf579316ddcebb9, type: 3}
propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_Arguments.m_ObjectArgumentAssemblyTypeName
value: UnityEngine.Object, UnityEngine
objectReference: {fileID: 0}
- target: {fileID: 5416637149047939654, guid: 6188f40319e07fb4dbf579316ddcebb9, type: 3}
propertyPath: m_Name

398
Assets/Prefabs/UI/JoinContent.prefab


m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 1}
m_AnchorMax: {x: 1, y: 1}
m_AnchoredPosition: {x: 0.00024414062, y: 0.00012207031}
m_SizeDelta: {x: 0, y: 0}
m_AnchoredPosition: {x: 0, y: 0}
m_SizeDelta: {x: 0, y: 10}
m_Pivot: {x: 0, y: 1}
--- !u!114 &3612080823527636284
MonoBehaviour:

m_FillOrigin: 0
m_UseSpriteMesh: 0
m_PixelsPerUnitMultiplier: 1
--- !u!1 &1321053168404587980
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 6265314097236686696}
- component: {fileID: 5544318959847799407}
- component: {fileID: 5435268494180039831}
m_Layer: 5
m_Name: QuickJoin
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &6265314097236686696
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1321053168404587980}
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_Children: []
m_Father: {fileID: 4279971184503703239}
m_RootOrder: 0
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 0}
m_AnchorMax: {x: 1, y: 1}
m_AnchoredPosition: {x: 0, y: 0}
m_SizeDelta: {x: 0, y: 0}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &5544318959847799407
CanvasRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1321053168404587980}
m_CullTransparentMesh: 1
--- !u!114 &5435268494180039831
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1321053168404587980}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: f4688fdb7df04437aeb418b961361dc5, type: 3}
m_Name:
m_EditorClassIdentifier:
m_Material: {fileID: 0}
m_Color: {r: 1, g: 1, b: 1, a: 1}
m_RaycastTarget: 1
m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
m_Maskable: 1
m_OnCullStateChanged:
m_PersistentCalls:
m_Calls: []
m_text: Quick Join
m_isRightToLeft: 0
m_fontAsset: {fileID: 11400000, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2}
m_sharedMaterial: {fileID: 2180264, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2}
m_fontSharedMaterials: []
m_fontMaterial: {fileID: 0}
m_fontMaterials: []
m_fontColor32:
serializedVersion: 2
rgba: 4278190080
m_fontColor: {r: 0, g: 0, b: 0, a: 1}
m_enableVertexGradient: 0
m_colorMode: 3
m_fontColorGradient:
topLeft: {r: 1, g: 1, b: 1, a: 1}
topRight: {r: 1, g: 1, b: 1, a: 1}
bottomLeft: {r: 1, g: 1, b: 1, a: 1}
bottomRight: {r: 1, g: 1, b: 1, a: 1}
m_fontColorGradientPreset: {fileID: 0}
m_spriteAsset: {fileID: 0}
m_tintAllSprites: 0
m_StyleSheet: {fileID: 0}
m_TextStyleHashCode: -1183493901
m_overrideHtmlColors: 0
m_faceColor:
serializedVersion: 2
rgba: 4294967295
m_fontSize: 14.95
m_fontSizeBase: 36
m_fontWeight: 400
m_enableAutoSizing: 1
m_fontSizeMin: 5
m_fontSizeMax: 25
m_fontStyle: 0
m_HorizontalAlignment: 2
m_VerticalAlignment: 512
m_textAlignment: 65535
m_characterSpacing: 0
m_wordSpacing: 0
m_lineSpacing: 0
m_lineSpacingMax: 0
m_paragraphSpacing: 0
m_charWidthMaxAdj: 0
m_enableWordWrapping: 1
m_wordWrappingRatios: 0.4
m_overflowMode: 0
m_linkedTextComponent: {fileID: 0}
parentLinkedComponent: {fileID: 0}
m_enableKerning: 1
m_enableExtraPadding: 0
checkPaddingRequired: 0
m_isRichText: 1
m_parseCtrlCharacters: 1
m_isOrthographic: 1
m_isCullingEnabled: 0
m_horizontalMapping: 0
m_verticalMapping: 0
m_uvLineOffset: 0
m_geometrySortingOrder: 0
m_IsTextObjectScaleStatic: 0
m_VertexBufferAutoSizeReduction: 0
m_useMaxVisibleDescender: 1
m_pageToDisplay: 1
m_margin: {x: 3, y: 3, z: 3, w: 3}
m_isUsingLegacyAnimationComponent: 0
m_isVolumetricText: 0
m_hasFontAssetChanged: 0
m_baseMaterial: {fileID: 0}
m_maskOffset: {x: 0, y: 0, z: 0, w: 0}
--- !u!1 &1500122260791094794
GameObject:
m_ObjectHideFlags: 0

m_hasFontAssetChanged: 0
m_baseMaterial: {fileID: 0}
m_maskOffset: {x: 0, y: 0, z: 0, w: 0}
--- !u!1 &2774600012428128071
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 4279971184503703239}
- component: {fileID: 1805236609733759440}
- component: {fileID: 6727285963461828066}
- component: {fileID: 1768667693063945141}
- component: {fileID: 6908243114497894038}
- component: {fileID: 1868924025075422308}
- component: {fileID: 1530269145881494601}
- component: {fileID: 6055677314485259263}
m_Layer: 5
m_Name: QuickJoin
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &4279971184503703239
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 2774600012428128071}
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_Children:
- {fileID: 6265314097236686696}
m_Father: {fileID: 4051350118216901408}
m_RootOrder: 2
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 0}
m_AnchorMax: {x: 0, y: 0}
m_AnchoredPosition: {x: 0, y: 0}
m_SizeDelta: {x: 0, y: 0}
m_Pivot: {x: 0.5, y: 0}
--- !u!222 &1805236609733759440
CanvasRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 2774600012428128071}
m_CullTransparentMesh: 1
--- !u!114 &6727285963461828066
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 2774600012428128071}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
m_Name:
m_EditorClassIdentifier:
m_Material: {fileID: 0}
m_Color: {r: 1, g: 1, b: 1, a: 0.7529412}
m_RaycastTarget: 1
m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
m_Maskable: 1
m_OnCullStateChanged:
m_PersistentCalls:
m_Calls: []
m_Sprite: {fileID: 10905, guid: 0000000000000000f000000000000000, type: 0}
m_Type: 1
m_PreserveAspect: 0
m_FillCenter: 1
m_FillMethod: 4
m_FillAmount: 1
m_FillClockwise: 1
m_FillOrigin: 0
m_UseSpriteMesh: 0
m_PixelsPerUnitMultiplier: 1
--- !u!114 &1768667693063945141
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 2774600012428128071}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3}
m_Name:
m_EditorClassIdentifier:
m_Navigation:
m_Mode: 3
m_WrapAround: 0
m_SelectOnUp: {fileID: 0}
m_SelectOnDown: {fileID: 0}
m_SelectOnLeft: {fileID: 0}
m_SelectOnRight: {fileID: 0}
m_Transition: 1
m_Colors:
m_NormalColor: {r: 1, g: 1, b: 1, a: 1}
m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1}
m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1}
m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1}
m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608}
m_ColorMultiplier: 1
m_FadeDuration: 0.1
m_SpriteState:
m_HighlightedSprite: {fileID: 0}
m_PressedSprite: {fileID: 0}
m_SelectedSprite: {fileID: 0}
m_DisabledSprite: {fileID: 0}
m_AnimationTriggers:
m_NormalTrigger: Normal
m_HighlightedTrigger: Highlighted
m_PressedTrigger: Pressed
m_SelectedTrigger: Selected
m_DisabledTrigger: Disabled
m_Interactable: 1
m_TargetGraphic: {fileID: 6727285963461828066}
m_OnClick:
m_PersistentCalls:
m_Calls:
- m_Target: {fileID: 1462126939442648229}
m_TargetAssemblyTypeName: LobbyRelaySample.UI.JoinMenuUI, LobbyRelaySample
m_MethodName: OnQuickJoin
m_Mode: 1
m_Arguments:
m_ObjectArgument: {fileID: 0}
m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine
m_IntArgument: 0
m_FloatArgument: 0
m_StringArgument:
m_BoolArgument: 0
m_CallState: 2
--- !u!114 &6908243114497894038
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 2774600012428128071}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 306cc8c2b49d7114eaa3623786fc2126, type: 3}
m_Name:
m_EditorClassIdentifier:
m_IgnoreLayout: 0
m_MinWidth: 60
m_MinHeight: -1
m_PreferredWidth: 80
m_PreferredHeight: 40
m_FlexibleWidth: -1
m_FlexibleHeight: -1
m_LayoutPriority: 1
--- !u!225 &1868924025075422308
CanvasGroup:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 2774600012428128071}
m_Enabled: 1
m_Alpha: 1
m_Interactable: 1
m_BlocksRaycasts: 1
m_IgnoreParentGroups: 0
--- !u!114 &1530269145881494601
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 2774600012428128071}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: ab355d5994635724dbde297a055fb586, type: 3}
m_Name:
m_EditorClassIdentifier:
m_onVisibilityChange:
m_PersistentCalls:
m_Calls: []
--- !u!114 &6055677314485259263
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 2774600012428128071}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 771ddda4ce2ee2a4dad57866ecc1170d, type: 3}
m_Name:
m_EditorClassIdentifier:
m_target: {fileID: 1530269145881494601}
m_alphaWhenHidden: 0.5
m_requestType: 2
--- !u!1 &2785142534214339697
GameObject:
m_ObjectHideFlags: 0

m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 0}
m_AnchorMax: {x: 1, y: 1}
m_AnchoredPosition: {x: -2.3721, y: 0}
m_SizeDelta: {x: -4.7443, y: 0}
m_AnchoredPosition: {x: 0, y: 0}
m_SizeDelta: {x: -6, y: 0}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &5098390794437201159
CanvasRenderer:

m_faceColor:
serializedVersion: 2
rgba: 4294967295
m_fontSize: 13.75
m_fontSize: 14
m_enableAutoSizing: 1
m_fontSizeMin: 12
m_fontSizeMax: 24
m_enableAutoSizing: 0
m_fontSizeMin: 18
m_fontSizeMax: 72
m_fontStyle: 0
m_HorizontalAlignment: 1
m_VerticalAlignment: 256

m_VertexBufferAutoSizeReduction: 0
m_useMaxVisibleDescender: 1
m_pageToDisplay: 1
m_margin: {x: 0, y: 0, z: 0, w: 19.59598}
m_margin: {x: 0, y: 0, z: 0, w: 0}
m_isUsingLegacyAnimationComponent: 0
m_isVolumetricText: 0
m_hasFontAssetChanged: 0

m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 0}
m_AnchorMax: {x: 1, y: 1}
m_AnchoredPosition: {x: -4.7443, y: 0}
m_SizeDelta: {x: -9.4886, y: 0}
m_AnchoredPosition: {x: 0, y: 0}
m_SizeDelta: {x: -6, y: 0}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &1575196456345378270
CanvasRenderer:

m_faceColor:
serializedVersion: 2
rgba: 4294967295
m_fontSize: 13.75
m_fontSize: 14
m_enableAutoSizing: 1
m_fontSizeMin: 12
m_fontSizeMax: 24
m_enableAutoSizing: 0
m_fontSizeMin: 18
m_fontSizeMax: 72
m_fontStyle: 0
m_HorizontalAlignment: 1
m_VerticalAlignment: 256

m_VertexBufferAutoSizeReduction: 0
m_useMaxVisibleDescender: 1
m_pageToDisplay: 1
m_margin: {x: 0, y: 0, z: 0, w: 19.595982}
m_margin: {x: 0, y: 0, z: 0, w: 0}
m_isUsingLegacyAnimationComponent: 0
m_isVolumetricText: 0
m_hasFontAssetChanged: 0

- {fileID: 2735345665116889010}
- {fileID: 8807990684132234493}
m_Father: {fileID: 4051350118216901408}
m_RootOrder: 1
m_RootOrder: 2
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 0}
m_AnchorMax: {x: 0, y: 0}

m_AnchorMin: {x: 0, y: 0}
m_AnchorMax: {x: 1, y: 1}
m_AnchoredPosition: {x: 0, y: 0}
m_SizeDelta: {x: 0, y: 0}
m_SizeDelta: {x: -6, y: 0}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &5773643305448341180
CanvasRenderer:

m_faceColor:
serializedVersion: 2
rgba: 4294967295
m_fontSize: 13.6
m_fontSize: 14
m_enableAutoSizing: 1
m_fontSizeMin: 12
m_fontSizeMax: 24
m_enableAutoSizing: 0
m_fontSizeMin: 18
m_fontSizeMax: 72
m_fontStyle: 0
m_HorizontalAlignment: 1
m_VerticalAlignment: 256

m_VertexBufferAutoSizeReduction: 0
m_useMaxVisibleDescender: 1
m_pageToDisplay: 1
m_margin: {x: 0.4125614, y: 0, z: -2.681553, w: 19.802261}
m_margin: {x: 0, y: 0, z: 0, w: 0}
m_isUsingLegacyAnimationComponent: 0
m_isVolumetricText: 0
m_hasFontAssetChanged: 0

m_LocalScale: {x: 1, y: 1, z: 1}
m_Children:
- {fileID: 5676572735189107223}
- {fileID: 8242294458145102565}
- {fileID: 4279971184503703239}
- {fileID: 8242294458145102565}
- {fileID: 3755762060919842715}
m_Father: {fileID: 4325310634866704869}
m_RootOrder: 1

m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 0}
m_AnchorMax: {x: 1, y: 1}
m_AnchoredPosition: {x: 0, y: 9.999998}
m_SizeDelta: {x: -6, y: -20}
m_AnchoredPosition: {x: 0, y: 0}
m_SizeDelta: {x: -6, y: 0}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &6074216203096440273
CanvasRenderer:

m_faceColor:
serializedVersion: 2
rgba: 4294967295
m_fontSize: 13.4
m_fontSize: 14
m_enableAutoSizing: 1
m_fontSizeMin: 12
m_fontSizeMax: 24
m_enableAutoSizing: 0
m_fontSizeMin: 18
m_fontSizeMax: 72
m_fontStyle: 0
m_HorizontalAlignment: 1
m_VerticalAlignment: 256

m_Children:
- {fileID: 2344857208759781651}
m_Father: {fileID: 4051350118216901408}
m_RootOrder: 4
m_RootOrder: 3
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 0}
m_AnchorMax: {x: 0, y: 0}

m_Children:
- {fileID: 3810288654714679559}
m_Father: {fileID: 4051350118216901408}
m_RootOrder: 3
m_RootOrder: 1
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 0}
m_AnchorMax: {x: 0, y: 0}

46
Assets/Prefabs/UI/JoinCreateCanvas.prefab


m_faceColor:
serializedVersion: 2
rgba: 4294967295
m_fontSize: 30.2
m_fontSize: 22.8
m_fontSizeBase: 24
m_fontWeight: 400
m_enableAutoSizing: 1

m_faceColor:
serializedVersion: 2
rgba: 4294967295
m_fontSize: 30.2
m_fontSize: 22.8
m_fontSizeBase: 24
m_fontWeight: 400
m_enableAutoSizing: 1

m_FallbackScreenDPI: 96
m_DefaultSpriteDPI: 96
m_DynamicPixelsPerUnit: 1
m_PresetInfoIsWorld: 1
m_PresetInfoIsWorld: 0
--- !u!114 &5836614391142406752
MonoBehaviour:
m_ObjectHideFlags: 0

propertyPath: m_Size
value: 1
objectReference: {fileID: 0}
- target: {fileID: 7522528203600751071, guid: c308ffc2a02e5ab4bbe70a8b2e8108c6, type: 3}
propertyPath: m_Value
value: 1
objectReference: {fileID: 0}
- target: {fileID: 7573825319354851387, guid: c308ffc2a02e5ab4bbe70a8b2e8108c6, type: 3}
propertyPath: m_AnchorMax.x
value: 0

- target: {fileID: 7573825319354851387, guid: c308ffc2a02e5ab4bbe70a8b2e8108c6, type: 3}
propertyPath: m_AnchorMin.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 7824921818678239159, guid: c308ffc2a02e5ab4bbe70a8b2e8108c6, type: 3}
propertyPath: m_SizeDelta.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 7824921818678239159, guid: c308ffc2a02e5ab4bbe70a8b2e8108c6, type: 3}
propertyPath: m_AnchoredPosition.x
value: 0.00024414062
objectReference: {fileID: 0}
- target: {fileID: 7824921818678239159, guid: c308ffc2a02e5ab4bbe70a8b2e8108c6, type: 3}
propertyPath: m_AnchoredPosition.y
value: 0.000029735498
objectReference: {fileID: 0}
- target: {fileID: 7955209533444849375, guid: c308ffc2a02e5ab4bbe70a8b2e8108c6, type: 3}
propertyPath: m_AnchorMax.x

value: 0
objectReference: {fileID: 0}
- target: {fileID: 8242294458145102565, guid: c308ffc2a02e5ab4bbe70a8b2e8108c6, type: 3}
propertyPath: m_AnchoredPosition.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 9095321446247494771, guid: c308ffc2a02e5ab4bbe70a8b2e8108c6, type: 3}
propertyPath: m_AnchorMax.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 9095321446247494771, guid: c308ffc2a02e5ab4bbe70a8b2e8108c6, type: 3}
propertyPath: m_AnchorMin.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 9095321446247494771, guid: c308ffc2a02e5ab4bbe70a8b2e8108c6, type: 3}
propertyPath: m_SizeDelta.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 9095321446247494771, guid: c308ffc2a02e5ab4bbe70a8b2e8108c6, type: 3}
propertyPath: m_SizeDelta.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 9095321446247494771, guid: c308ffc2a02e5ab4bbe70a8b2e8108c6, type: 3}
propertyPath: m_AnchoredPosition.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 9095321446247494771, guid: c308ffc2a02e5ab4bbe70a8b2e8108c6, type: 3}
propertyPath: m_AnchoredPosition.y
value: 0
objectReference: {fileID: 0}

6
Assets/Prefabs/UI/LobbyCodeCanvas.prefab


m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children: []
m_Father: {fileID: 7356978206806771932}
m_RootOrder: 1

m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children:
- {fileID: 1060855158700719950}
- {fileID: 7974420753511511685}

m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children:
- {fileID: 7356978206806771932}
m_Father: {fileID: 1118541987231860827}

m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children: []
m_Father: {fileID: 7356978206806771932}
m_RootOrder: 0

m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children:
- {fileID: 666358594839851073}
- {fileID: 2985101570411328694}

m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children: []
m_Father: {fileID: 1118541987231860827}
m_RootOrder: 0

6
Assets/Prefabs/UI/LobbyGameCanvas.prefab


m_Enabled: 1
m_Alpha: 1
m_Interactable: 1
m_BlocksRaycasts: 0
m_BlocksRaycasts: 1
m_IgnoreParentGroups: 0
--- !u!114 &3687075862038422248
MonoBehaviour:

- target: {fileID: 1118541987231860827, guid: 81e22025e6659264a8d0bc8dfebe95a7, type: 3}
propertyPath: m_LocalEulerAnglesHint.z
value: 0
objectReference: {fileID: 0}
- target: {fileID: 1757568212719955599, guid: 81e22025e6659264a8d0bc8dfebe95a7, type: 3}
propertyPath: m_fontSize
value: 20.55
objectReference: {fileID: 0}
- target: {fileID: 6429120237646330959, guid: 81e22025e6659264a8d0bc8dfebe95a7, type: 3}
propertyPath: ShowThisWhen

12
Assets/Prefabs/UI/LobbyUserList.prefab


m_Enabled: 1
m_Alpha: 1
m_Interactable: 1
m_BlocksRaycasts: 0
m_BlocksRaycasts: 1
m_IgnoreParentGroups: 0
--- !u!114 &4463750083940306591
MonoBehaviour:

objectReference: {fileID: 0}
m_RemovedComponents: []
m_SourcePrefab: {fileID: 100100000, guid: 9c09208dc6d58f54aabb57c12071b660, type: 3}
--- !u!224 &3685075291402800769 stripped
RectTransform:
m_CorrespondingSourceObject: {fileID: 3229036008637484624, guid: 9c09208dc6d58f54aabb57c12071b660, type: 3}
m_PrefabInstance: {fileID: 2300164376451760337}
m_PrefabAsset: {fileID: 0}
--- !u!114 &6290668908104815487 stripped
MonoBehaviour:
m_CorrespondingSourceObject: {fileID: 5235189765028238254, guid: 9c09208dc6d58f54aabb57c12071b660, type: 3}

m_Script: {fileID: 11500000, guid: 9557a5d232068a149987bc0753800f26, type: 3}
m_Name:
m_EditorClassIdentifier:
--- !u!224 &3685075291402800769 stripped
RectTransform:
m_CorrespondingSourceObject: {fileID: 3229036008637484624, guid: 9c09208dc6d58f54aabb57c12071b660, type: 3}
m_PrefabInstance: {fileID: 2300164376451760337}
m_PrefabAsset: {fileID: 0}
--- !u!1001 &4128781293466929275
PrefabInstance:
m_ObjectHideFlags: 0

11
Assets/Prefabs/UI/MainMenuCanvas.prefab


m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children: []
m_Father: {fileID: 1547097154335127670}
m_RootOrder: 1

m_OnCullStateChanged:
m_PersistentCalls:
m_Calls: []
m_text: Lobby Labyrinth
m_text: Game Lobby Sample
m_isRightToLeft: 0
m_fontAsset: {fileID: 11400000, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2}
m_sharedMaterial: {fileID: 2180264, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2}

m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children: []
m_Father: {fileID: 1547097154637997989}
m_RootOrder: 0

m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children:
- {fileID: 1547097155015051324}
- {fileID: 1547097153480224111}

m_onVisibilityChange:
m_PersistentCalls:
m_Calls: []
showing: 0
ShowThisWhen: 1
--- !u!114 &575636749548035060
MonoBehaviour:

m_StringArgument:
m_BoolArgument: 0
m_CallState: 2
observeOnStart: 1
--- !u!1 &1547097154637997988
GameObject:
m_ObjectHideFlags: 0

m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children:
- {fileID: 1547097153987463586}
m_Father: {fileID: 1547097154335127670}

m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children: []
m_Father: {fileID: 1547097154335127670}
m_RootOrder: 0

m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children:
- {fileID: 3557122422878236895}
m_Father: {fileID: 1547097154335127670}

m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children: []
m_Father: {fileID: 3838875500213396203}
m_RootOrder: 0

2
Assets/Prefabs/UI/RenamePopup.prefab


m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 8624457953394683845}
m_Enabled: 1
m_Alpha: 1
m_Alpha: 0
m_Interactable: 0
m_BlocksRaycasts: 0
m_IgnoreParentGroups: 0

153
Assets/Prefabs/UI/UserCardPanel.prefab


- component: {fileID: 5235189765028238254}
- component: {fileID: 788426075660952210}
- component: {fileID: 7885056472121154813}
- component: {fileID: 4826507163535553981}
m_Layer: 5
m_Name: UserCardPanel
m_TagString: Untagged

m_StatusText: {fileID: 3667934756810823183}
m_EmoteText: {fileID: 7097926522474954833}
m_HostIcon: {fileID: 2063326445664711249}
m_MuteUI: {fileID: 5371667691979465528}
m_lobbyUserVolumeUI: {fileID: 7750493951695561362}
m_vivoxUserHandler: {fileID: 4826507163535553981}
--- !u!114 &788426075660952210
MonoBehaviour:
m_ObjectHideFlags: 0

m_ChildScaleWidth: 0
m_ChildScaleHeight: 0
m_ReverseArrangement: 0
--- !u!114 &4826507163535553981
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1767503274657767312}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 78d292f3bd9f1614cb744dcb4fe3ac12, type: 3}
m_Name:
m_EditorClassIdentifier:
m_lobbyUserVolumeUI: {fileID: 7750493951695561362}
--- !u!1 &3010031715874034773
GameObject:
m_ObjectHideFlags: 0

- component: {fileID: 3081577339344251787}
- component: {fileID: 7240929418107909207}
- component: {fileID: 5467963549174563591}
- component: {fileID: 5371667691979465528}
- component: {fileID: 6569968321909521185}
- component: {fileID: 5564390157418853622}
m_Layer: 5
m_Name: MuteArea

m_FlexibleWidth: -1
m_FlexibleHeight: -1
m_LayoutPriority: 3
--- !u!114 &5371667691979465528
--- !u!114 &6569968321909521185
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}

m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: f722d3f4131ab52469d430cc5855ee83, type: 3}
m_Script: {fileID: 11500000, guid: ab355d5994635724dbde297a055fb586, type: 3}
m_Calls:
- m_Target: {fileID: 0}
m_TargetAssemblyTypeName:
m_MethodName:
m_Mode: 1
m_Arguments:
m_ObjectArgument: {fileID: 0}
m_ObjectArgumentAssemblyTypeName:
m_IntArgument: 0
m_FloatArgument: 0
m_StringArgument:
m_BoolArgument: 0
m_CallState: 2
m_voiceRings: {fileID: 1287953984161108202}
m_Calls: []
--- !u!225 &5564390157418853622
CanvasGroup:
m_ObjectHideFlags: 0

m_GameObject: {fileID: 3010031715874034773}
m_Enabled: 1
m_Alpha: 1
m_Interactable: 0
m_BlocksRaycasts: 0
m_Interactable: 1
m_BlocksRaycasts: 1
m_IgnoreParentGroups: 0
--- !u!1 &3079367817526768243
GameObject:

onValueChanged:
m_PersistentCalls:
m_Calls:
- m_Target: {fileID: 5235189765028238254}
m_TargetAssemblyTypeName: LobbyRelaySample.UI.InLobbyUserUI, LobbyRelaySample
m_MethodName: OnMuteToggled
- m_Target: {fileID: 4826507163535553981}
m_TargetAssemblyTypeName: LobbyRelaySample.vivox.VivoxUserHandler, LobbyRelaySample
m_MethodName: OnMuteToggle
m_Mode: 0
m_Arguments:
m_ObjectArgument: {fileID: 0}

m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 3518057056990530202}
m_CullTransparentMesh: 1
--- !u!1 &3906605741203742200
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 853418489715471536}
- component: {fileID: 5399015282885967859}
- component: {fileID: 6714245214549863763}
m_Layer: 5
m_Name: UnmutedIcon_Mic
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &853418489715471536
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 3906605741203742200}
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_Children: []
m_Father: {fileID: 4798292317257423901}
m_RootOrder: 1
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 0}
m_AnchorMax: {x: 1, y: 1}
m_AnchoredPosition: {x: 0, y: 0}
m_SizeDelta: {x: 0, y: 0}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &5399015282885967859
CanvasRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 3906605741203742200}
m_CullTransparentMesh: 1
--- !u!114 &6714245214549863763
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 3906605741203742200}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
m_Name:
m_EditorClassIdentifier:
m_Material: {fileID: 0}
m_Color: {r: 1, g: 1, b: 1, a: 1}
m_RaycastTarget: 1
m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
m_Maskable: 1
m_OnCullStateChanged:
m_PersistentCalls:
m_Calls: []
m_Sprite: {fileID: 21300000, guid: d98c1d9f6f85f6e4cb4a0552d0452b48, type: 3}
m_Type: 0
m_PreserveAspect: 0
m_FillCenter: 1
m_FillMethod: 4
m_FillAmount: 1
m_FillClockwise: 1
m_FillOrigin: 0
m_UseSpriteMesh: 0
m_PixelsPerUnitMultiplier: 1
--- !u!1 &4250551697308330837
GameObject:
m_ObjectHideFlags: 0

m_LocalScale: {x: 1, y: 1, z: 1}
m_Children:
- {fileID: 1122323841334202136}
- {fileID: 853418489715471536}
- {fileID: 4530763983275839173}
m_Father: {fileID: 5144918951328900891}
m_RootOrder: 0

- component: {fileID: 478472562358024413}
- component: {fileID: 1918995816743806069}
- component: {fileID: 7750493951695561362}
- component: {fileID: 6299655602247130973}
- component: {fileID: 5190888420783209525}
m_Layer: 5
m_Name: VolumeArea

m_IgnoreLayout: 0
m_MinWidth: -1
m_MinHeight: -1
m_PreferredWidth: 125
m_PreferredWidth: 100
m_PreferredHeight: 40
m_FlexibleWidth: -1
m_FlexibleHeight: -1

m_Script: {fileID: 11500000, guid: a06ec4a4943ad514da7a222eacb66528, type: 3}
m_Name:
m_EditorClassIdentifier:
m_volumeSliderContainer: {fileID: 6299655602247130973}
m_muteButtonContainer: {fileID: 6569968321909521185}
m_muteIcon: {fileID: 41255065417622773}
m_micMuteIcon: {fileID: 3906605741203742200}
--- !u!114 &6299655602247130973
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 4809966060551735762}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: ab355d5994635724dbde297a055fb586, type: 3}
m_Name:
m_EditorClassIdentifier:
m_onVisibilityChange:
m_PersistentCalls:
m_Calls: []

m_MinValue: 0
m_MaxValue: 1
m_WholeNumbers: 0
m_Value: 0
m_Value: 0.7142857
- m_Target: {fileID: 5235189765028238254}
m_TargetAssemblyTypeName: LobbyRelaySample.UI.InLobbyUserUI, LobbyRelaySample
- m_Target: {fileID: 4826507163535553981}
m_TargetAssemblyTypeName: LobbyRelaySample.vivox.VivoxUserHandler, LobbyRelaySample
m_MethodName: OnVolumeSlide
m_Mode: 0
m_Arguments:

m_LocalScale: {x: 1, y: 1, z: 1}
m_Children: []
m_Father: {fileID: 4798292317257423901}
m_RootOrder: 1
m_RootOrder: 2
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 0}
m_AnchorMax: {x: 1, y: 1}

m_OnCullStateChanged:
m_PersistentCalls:
m_Calls: []
m_Sprite: {fileID: 21300000, guid: 1e82decb13fc114438e0314bf6252451, type: 3}
m_Sprite: {fileID: 21300000, guid: bf5910b0ba2403a448a96cb6f77b611c, type: 3}
m_Type: 0
m_PreserveAspect: 0
m_FillCenter: 1

832
Assets/Scenes/mainScene.unity
文件差异内容过多而无法显示
查看文件

23
Assets/Scripts/Game/GameManager.cs


/// </summary>
public class GameManager : MonoBehaviour, IReceiveMessages
{
/// <summary>
/// All these should be assigned the observers in the scene at the start.
/// </summary>
#region UI elements that observe the local state. These are
#region UI elements that observe the local state. These should be assigned the observers in the scene during Start.
[SerializeField]
private List<LocalGameStateObserver> m_GameStateObservers = new List<LocalGameStateObserver>();

private LocalGameState m_localGameState = new LocalGameState();
private LobbyUser m_localUser;
private LocalLobby m_localLobby;
private vivox.VivoxSetup m_vivoxSetup = new vivox.VivoxSetup();
[SerializeField]
private List<vivox.VivoxUserHandler> m_vivoxUserHandlers;
/// <summary>Rather than a setter, this is usable in-editor. It won't accept an enum, however.</summary>
public void SetLobbyColorFilter(int color)

Debug.Log("Signed in.");
m_localUser.ID = Locator.Get.Identity.GetSubIdentity(Auth.IIdentityType.Auth).GetContent("id");
m_localUser.DisplayName = NameGenerator.GetName(m_localUser.ID);
m_vivoxSetup.Initialize(m_vivoxUserHandlers); // Should be before AddPlayer, since that will attempt to set the Vivox ID based on the Auth ID.
m_localLobby.AddPlayer(m_localUser); // The local LobbyUser object will be hooked into UI before the LocalLobby is populated during lobby join, so the LocalLobby must know about it already when that happens.
}

else if (type == MessageType.SetPlayerSound)
{
var playerSound = (LobbyUserAudio)msg;
}
}
}
private void SetGameState(GameState state)

m_lobbyContentHeartbeat.BeginTracking(m_localLobby, m_localUser);
SetUserLobbyState();
StartRelayConnection();
m_vivoxSetup.JoinLobbyChannel(m_localLobby.LobbyID, null); // TODO: Retry on failure?
}
private void OnLeftLobby()

m_lobbyContentHeartbeat.EndTracking();
LobbyAsyncRequests.Instance.EndTracking();
m_vivoxSetup.LeaveLobbyChannel();
{
Component.Destroy(m_relaySetup);
{ Component.Destroy(m_relaySetup);
{
Component.Destroy(m_relayClient);
{ Component.Destroy(m_relayClient);
m_relayClient = null;
}
}

51
Assets/Scripts/Game/LobbyUser.cs


public enum UserStatus
{
None = 0,
Connecting = 1, // User has joined a lobby but has not yet connected to Relay.
Lobby = 2, // User is in a lobby and connected to Relay.
Ready = 4, // User has selected the ready button, to ready for the "game" to start.
InGame = 8, // User is part of a "game" that has started.
Menu = 16 // User is not in a lobby, in one of the main menus.
Connecting = 1, // User has joined a lobby but has not yet connected to Relay.
Lobby = 2, // User is in a lobby and connected to Relay.
Ready = 4, // User has selected the ready button, to ready for the "game" to start.
InGame = 8, // User is part of a "game" that has started.
Menu = 16 // User is not in a lobby, in one of the main menus.
}
/// <summary>

public class LobbyUser : Observed<LobbyUser>
{
public LobbyUser(bool isHost = false, string displayName = null, string id = null, EmoteType emote = EmoteType.None, UserStatus userStatus = UserStatus.Menu, bool hasVoice = false)
public LobbyUser(bool isHost = false, string displayName = null, string id = null, EmoteType emote = EmoteType.None, UserStatus userStatus = UserStatus.Menu)
m_data = new UserData(isHost, displayName, id, emote, userStatus, hasVoice);
m_data = new UserData(isHost, displayName, id, emote, userStatus);
}
#region Local UserData

public string ID { get; set; }
public EmoteType Emote { get; set; }
public UserStatus UserStatus { get; set; }
public bool HasVoice { get; set; }
public UserData(bool isHost, string displayName, string id, EmoteType emote, UserStatus userStatus, bool hasVoice)
public UserData(bool isHost, string displayName, string id, EmoteType emote, UserStatus userStatus)
{
IsHost = isHost;
DisplayName = displayName;

HasVoice = hasVoice;
}
}

{
m_data = new UserData(false, m_data.DisplayName, m_data.ID, EmoteType.None, UserStatus.Menu, false); // ID and DisplayName should persist since this might be the local user.
m_data = new UserData(false, m_data.DisplayName, m_data.ID, EmoteType.None, UserStatus.Menu); // ID and DisplayName should persist since this might be the local user.
}
#endregion

/// </summary>
[Flags]
public enum UserMembers{ IsHost = 1, DisplayName = 2, Emote = 4, ID = 8, UserStatus = 16, HasVoice = 32
//TODO Add in lobbyUsers Voice Activity for animation?
}
public enum UserMembers
{
IsHost = 1,
DisplayName = 2,
Emote = 4,
ID = 8,
UserStatus = 16
}
private UserMembers m_lastChanged;
public UserMembers LastChanged => m_lastChanged;

}
}
}
public EmoteType Emote
{
get => m_data.Emote;

}
UserStatus m_userStatus = UserStatus.Menu;
public UserStatus UserStatus
{
get => m_userStatus;

}
}
public bool HasVoice
{
get { return m_data.HasVoice; }
set
{
if (m_data.HasVoice != value)
{
m_data.HasVoice = value;
m_lastChanged = UserMembers.HasVoice;
OnChanged(this);
}
}
}
public override void CopyObserved(LobbyUser observed)
{
UserData data = observed.m_data;

(m_data.ID == data.ID ? 0 : (int)UserMembers.ID) |
(m_data.Emote == data.Emote ? 0 : (int)UserMembers.Emote) |
(m_data.UserStatus == data.UserStatus ? 0 : (int)UserMembers.UserStatus) |
(m_data.HasVoice == data.HasVoice ? 0 : (int)UserMembers.HasVoice);
(m_data.UserStatus == data.UserStatus ? 0 : (int)UserMembers.UserStatus);
if (lastChanged == 0) // Ensure something actually changed.
return;

13
Assets/Scripts/Game/LobbyUserAudio.cs


using System.Collections;
using System.Collections.Generic;
using UnityEngine;
namespace LobbyRelaySample

public string ID { get; private set; }
public bool HasVoice { get; set; }
public bool Muted { get; set; }
public float UserVolume { get; set; }
// We should explicitly ensure that UserVolume is a normalized value, as letting the volume be set too high could be harmful to listeners.
private float m_userVolume;
public float UserVolume
{
get => m_userVolume;
set => m_userVolume = Mathf.Clamp01(value);
}
public LobbyUserAudio(string userID)
{

UserVolume = 1;
UserVolume = 50/70f; // Begin at what will be neutral volume given the range of min to max volume.
}
}
}

4
Assets/Scripts/LobbyRelaySample.asmdef


"GUID:5540e30183c82e84b954c033c388e06c",
"GUID:fe25561d224ed4743af4c60938a59d0b",
"GUID:4c3f49d89436d478ea78315c03159dcc",
"GUID:f2d49d9fa7e7eb3418e39723a7d3b92f"
"GUID:f2d49d9fa7e7eb3418e39723a7d3b92f",
"GUID:060a730ab4d4804498f4a3146ed6f776",
"GUID:6087a74f6015aae4daed9a2577a7596c"
],
"includePlatforms": [],
"excludePlatforms": [],

35
Assets/Scripts/UI/InLobbyUserUI.cs


using TMPro;
using UnityEngine;
using UnityEngine.Serialization;
using UnityEngine.UI;
namespace LobbyRelaySample.UI

Image m_HostIcon;
[SerializeField]
MuteUI m_MuteUI;
[SerializeField]
LobbyUserVolumeUI m_lobbyUserVolumeUI;
LobbyUserAudio m_userAudio = new LobbyUserAudio("None");
vivox.VivoxUserHandler m_vivoxUserHandler;
public bool IsAssigned => UserId != null;

m_observer = GetComponent<LobbyUserObserver>();
m_observer.BeginObserving(myLobbyUser);
UserId = myLobbyUser.ID;
m_userAudio = new LobbyUserAudio(UserId);
m_vivoxUserHandler.SetId(UserId);
}
public void OnUserLeft()

m_observer.EndObserving();
}
public void OnMuteToggled(bool muted)
{
m_userAudio.Muted = muted;
Locator.Get.Messenger.OnReceiveMessage(MessageType.SetPlayerSound, m_userAudio);
}
public void OnVolumeSlide(float volume)
{
m_userAudio.UserVolume = volume;
Locator.Get.Messenger.OnReceiveMessage(MessageType.SetPlayerSound, m_userAudio);
}
public override void ObservedUpdated(LobbyUser observed)
{
m_DisplayNameText.SetText(observed.DisplayName);

SetAudioState(observed.HasVoice);
SetAudioState(true);
}
/// <summary>

{
if (hasVoice)
{
m_MuteUI.EnableVoice();
m_lobbyUserVolumeUI.EnableVoice();
}
else
{
m_MuteUI.DisableVoice();
m_lobbyUserVolumeUI.DisableVoice();
}
// TODO: Disable if vivox is not available, per-user.
}
string SetStatusFancy(UserStatus status)

47
Assets/Scripts/UI/LobbyUserVolumeUI.cs


namespace LobbyRelaySample.UI
{
public class LobbyUserVolumeUI : UIPanelBase
public class LobbyUserVolumeUI : MonoBehaviour
[SerializeField]
private UIPanelBase m_volumeSliderContainer;
[SerializeField]
private UIPanelBase m_muteButtonContainer;
[SerializeField]
[Tooltip("This is shown for other players, to mute them.")]
private GameObject m_muteIcon;
[SerializeField]
[Tooltip("This is shown for the local player, to make it clearer that they are muting themselves.")]
private GameObject m_micMuteIcon;
public bool IsLocalPlayer { private get; set; }
Show();
if (IsLocalPlayer)
{
m_volumeSliderContainer.Hide(0);
m_muteButtonContainer.Show();
m_muteIcon.SetActive(false);
m_micMuteIcon.SetActive(true);
}
else
{
m_volumeSliderContainer.Show();
m_muteButtonContainer.Show();
m_muteIcon.SetActive(true);
m_micMuteIcon.SetActive(false);
}
Hide();
m_volumeSliderContainer.Hide(0.4f);
m_muteButtonContainer.Hide(0.4f);
m_muteIcon.SetActive(true);
m_micMuteIcon.SetActive(false);
/* TODO : If we can hook in the volume from a user, we can plug it in here.
/// <summary>
/// Controls the visibility of the volume rings to show activity levels of the voice channel on this user.
/// </summary>
/// <param name="normalizedVolume"></param>
public void OnSoundDetected(float normalizedVolume)
{
m_voiceRings.alpha = normalizedVolume;
}
*/
}

3
Packages/manifest.json


"com.unity.services.core": "1.0.0",
"com.unity.services.lobby": "1.0.0-pre.4",
"com.unity.services.relay": "1.0.1-pre.1",
"com.unity.services.vivox": "15.1.150000-pre.6",
"com.unity.sysroot.linux-x86_64": "0.1.15-preview",
"com.unity.test-framework": "1.1.27",
"com.unity.textmeshpro": "3.0.6",

"com.unity.modules.xr": "1.0.0"
},
"scopedRegistries": []
}
}

18
Packages/packages-lock.json


},
"url": "https://packages.unity.com"
},
"com.unity.services.vivox": {
"version": "15.1.150000-pre.6",
"depth": 0,
"source": "registry",
"dependencies": {
"com.unity.settings-manager": "1.0.3",
"com.unity.services.core": "1.1.0-pre.8",
"com.unity.nuget.newtonsoft-json": "2.0.0"
},
"url": "https://packages.unity.com"
},
"com.unity.settings-manager": {
"version": "1.0.3",
"depth": 1,
"source": "registry",
"dependencies": {},
"url": "https://packages.unity.com"
},
"com.unity.sysroot": {
"version": "0.1.19-preview",
"depth": 1,

12
Assets/Art/Volume/micIcon.png

之前 之后
宽度: 1500  |  高度: 1500  |  大小: 13 KiB

96
Assets/Art/Volume/micIcon.png.meta


fileFormatVersion: 2
guid: d98c1d9f6f85f6e4cb4a0552d0452b48
TextureImporter:
internalIDToNameTable: []
externalObjects: {}
serializedVersion: 11
mipmaps:
mipMapMode: 0
enableMipMap: 0
sRGBTexture: 1
linearTexture: 0
fadeOut: 0
borderMipMap: 0
mipMapsPreserveCoverage: 0
alphaTestReferenceValue: 0.5
mipMapFadeDistanceStart: 1
mipMapFadeDistanceEnd: 3
bumpmap:
convertToNormalMap: 0
externalNormalMap: 0
heightScale: 0.25
normalMapFilter: 0
isReadable: 0
streamingMipmaps: 0
streamingMipmapsPriority: 0
vTOnly: 0
grayScaleToAlpha: 0
generateCubemap: 6
cubemapConvolution: 0
seamlessCubemap: 0
textureFormat: 1
maxTextureSize: 2048
textureSettings:
serializedVersion: 2
filterMode: 1
aniso: 1
mipBias: 0
wrapU: 1
wrapV: 1
wrapW: 1
nPOTScale: 0
lightmap: 0
compressionQuality: 50
spriteMode: 1
spriteExtrude: 1
spriteMeshType: 1
alignment: 0
spritePivot: {x: 0.5, y: 0.5}
spritePixelsToUnits: 100
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
spriteGenerateFallbackPhysicsShape: 1
alphaUsage: 1
alphaIsTransparency: 1
spriteTessellationDetail: -1
textureType: 8
textureShape: 1
singleChannelComponent: 0
flipbookRows: 1
flipbookColumns: 1
maxTextureSizeSet: 0
compressionQualitySet: 0
textureFormatSet: 0
ignorePngGamma: 0
applyGammaDecoding: 0
platformSettings:
- serializedVersion: 3
buildTarget: DefaultTexturePlatform
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
spriteSheet:
serializedVersion: 2
sprites: []
outline: []
physicsShape: []
bones: []
spriteID: 5e97eb03825dee720800000000000000
internalID: 0
vertices: []
indices:
edges: []
weights: []
secondaryTextures: []
spritePackingTag:
pSDRemoveMatte: 0
pSDShowRemoveMatteOption: 0
userData:
assetBundleName:
assetBundleVariant:

29
Assets/Art/Volume/mutedIcon.png

之前 之后
宽度: 1500  |  高度: 1500  |  大小: 30 KiB

8
Assets/Scripts/Vivox.meta


fileFormatVersion: 2
guid: 679d3159a518edc44a3d0ec4a97e0645
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

11
Assets/Scripts/Vivox/VivoxSetup.cs.meta


fileFormatVersion: 2
guid: c03a71d8e07097647ae53b5f0b98d69d
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

11
Assets/Scripts/Vivox/VivoxUserHandler.cs.meta


fileFormatVersion: 2
guid: 78d292f3bd9f1614cb744dcb4fe3ac12
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

101
Assets/Scripts/Vivox/VivoxSetup.cs


using System;
using System.Collections.Generic;
using Unity.Services.Vivox;
using VivoxUnity;
namespace LobbyRelaySample.vivox
{
/// <summary>
/// Handles setting up a voice channel once inside a lobby.
/// </summary>
public class VivoxSetup
{
private bool m_hasInitialized = false;
private bool m_isMidInitialize = false;
private ILoginSession m_loginSession = null;
private IChannelSession m_channelSession = null;
private List<VivoxUserHandler> m_userHandlers;
/// <summary>
/// Initialize the Vivox service, before actually joining any audio channels.
/// </summary>
public void Initialize(List<VivoxUserHandler> userHandlers)
{
if (m_isMidInitialize)
return;
m_isMidInitialize = true;
m_userHandlers = userHandlers;
VivoxService.Instance.Initialize();
Account account = new Account(Locator.Get.Identity.GetSubIdentity(Auth.IIdentityType.Auth).GetContent("id"));
m_loginSession = VivoxService.Instance.Client.GetLoginSession(account);
string token = m_loginSession.GetLoginToken();
m_loginSession.BeginLogin(m_loginSession.GetLoginToken(), SubscriptionMode.Accept, null, null, null, result =>
{
try
{
m_loginSession.EndLogin(result);
m_hasInitialized = true;
}
finally
{
m_isMidInitialize = false;
}
});
}
/// <summary>
/// Once in a lobby, start joining a voice channel for that lobby. Be sure to complete Initialize first.
/// </summary>
/// <param name="onComplete">Called whether the channel is successfully joined or not.</param>
public void JoinLobbyChannel(string lobbyId, Action<bool> onComplete)
{
if (!m_hasInitialized || m_loginSession.State != LoginState.LoggedIn)
{
UnityEngine.Debug.LogWarning("Can't join a Vivox audio channel, as Vivox login hasn't completed yet.");
onComplete?.Invoke(false);
return;
}
ChannelType channelType = ChannelType.NonPositional;
Channel channel = new Channel(lobbyId + "_voice", channelType, null);
m_channelSession = m_loginSession.GetChannelSession(channel);
string token = m_channelSession.GetConnectToken();
m_channelSession.BeginConnect(true, false, true, m_channelSession.GetConnectToken(), result =>
{
m_channelSession.EndConnect(result); // TODO: Error handling?
onComplete?.Invoke(true);
foreach (VivoxUserHandler userHandler in m_userHandlers)
userHandler.OnChannelJoined(m_channelSession);
});
}
// TODO: Reset slider and mute UI on lobby enter
/// <summary>
/// To be called when leaving a lobby.
/// </summary>
public void LeaveLobbyChannel()
{
ChannelId id = m_channelSession.Channel;
m_channelSession?.Disconnect(
(result) => { m_loginSession.DeleteChannelSession(id); }); // TODO: What about if this is called while also trying to connect?
foreach (VivoxUserHandler userHandler in m_userHandlers)
userHandler.OnChannelLeft();
}
/// <summary>
/// To be called on quit, this will disconnect the player from Vivox entirely instead of just leaving any open lobby channels.
/// </summary>
public void Uninitialize()
{
// TODO: Also call LeaveLobbyChannel?
if (!m_hasInitialized)
return;
m_loginSession.Logout();
}
}
}

161
Assets/Scripts/Vivox/VivoxUserHandler.cs


using UnityEngine;
using Unity.Services.Vivox;
using VivoxUnity;
namespace LobbyRelaySample.vivox
{
/// <summary>
/// Listens for changes to Vivox state for one user in the lobby.
/// Instead of going through Relay, this will listen to the Vivox service since it will already transmit state changes for all clients.
/// </summary>
public class VivoxUserHandler : MonoBehaviour
{
[SerializeField]
private UI.LobbyUserVolumeUI m_lobbyUserVolumeUI;
private IChannelSession m_channelSession;
private string m_id;
private string m_vivoxId;
private const int k_volumeMin = -50, k_volumeMax = 20; // From the Vivox docs, the valid range is [-50, 50] but anything above 25 risks being painfully loud.
public void Start()
{
m_lobbyUserVolumeUI.DisableVoice();
}
public void SetId(string id)
{
m_id = id;
// Vivox appends additional info to the ID we provide, in order to associate it with a specific channel. We'll construct m_vivoxId to match the ID used by Vivox.
// FUTURE: This isn't yet available. When using Auth, the Vivox ID will match this format:
// Account account = new Account(id);
// m_vivoxId = $"sip:.{account.Issuer}.{m_id}.{environmentId}.@{account.Domain}";
// However, the environment ID from Auth is not exposed anywhere, and Vivox doesn't provide a way to retrieve the ID, either.
// Instead, when needed, we'll search for the Vivox ID containing this user's Auth ID, which is a GUID so collisions are extremely unlikely.
// In the future, remove FindVivoxId and pass the environment ID here instead.
m_vivoxId = null;
// SetID might be called after we've received the IChannelSession for remote players, which would mean after OnParticipant Added. So, duplicate the VivoxID work here.
if (m_channelSession != null)
{
foreach (var participant in m_channelSession.Participants)
{
if (m_id == participant.Account.DisplayName)
{
m_vivoxId = participant.Key;
m_lobbyUserVolumeUI.IsLocalPlayer = participant.IsSelf;
m_lobbyUserVolumeUI.EnableVoice();
break;
}
}
}
}
public void OnChannelJoined(IChannelSession channelSession)
{
m_channelSession = channelSession;
m_channelSession.Participants.AfterKeyAdded += OnParticipantAdded;
m_channelSession.Participants.BeforeKeyRemoved += BeforeParticipantRemoved;
m_channelSession.Participants.AfterValueUpdated += OnParticipantValueUpdated;
}
public void OnChannelLeft()
{
m_channelSession.Participants.AfterKeyAdded -= OnParticipantAdded;
m_channelSession.Participants.BeforeKeyRemoved -= BeforeParticipantRemoved;
m_channelSession.Participants.AfterValueUpdated -= OnParticipantValueUpdated;
m_channelSession = null;
}
/// <summary>
/// To be called whenever a new Participant is added to the channel, using the events from Vivox's custom dictionary.
/// </summary>
private void OnParticipantAdded(object sender, KeyEventArg<string> keyEventArg)
{
var source = (VivoxUnity.IReadOnlyDictionary<string, IParticipant>)sender;
var participant = source[keyEventArg.Key];
var username = participant.Account.DisplayName;
bool isThisUser = username == m_id;
if (isThisUser)
{ m_vivoxId = keyEventArg.Key; // Since we couldn't construct the Vivox ID earlier, retrieve it here.
m_lobbyUserVolumeUI.IsLocalPlayer = participant.IsSelf;
m_lobbyUserVolumeUI.EnableVoice();
}
}
private void BeforeParticipantRemoved(object sender, KeyEventArg<string> keyEventArg)
{
var source = (VivoxUnity.IReadOnlyDictionary<string, IParticipant>)sender;
var participant = source[keyEventArg.Key];
var username = participant.Account.DisplayName;
bool isThisUser = username == m_id;
if (isThisUser)
{ m_lobbyUserVolumeUI.DisableVoice();
}
}
private void OnParticipantValueUpdated(object sender, ValueEventArg<string, IParticipant> valueEventArg)
{
var source = (VivoxUnity.IReadOnlyDictionary<string, IParticipant>)sender;
var participant = source[valueEventArg.Key];
var username = participant.Account.DisplayName;
string property = valueEventArg.PropertyName;
if (username == m_id)
{
if (property == "UnavailableCaptureDevice")
{
if (participant.UnavailableCaptureDevice)
{ m_lobbyUserVolumeUI.DisableVoice();
participant.SetIsMuteForAll(m_vivoxId, true, null); // Note: If you add more places where a player might be globally muted, a state machine might be required for accurate logic.
}
else
{ m_lobbyUserVolumeUI.EnableVoice();
participant.SetIsMuteForAll(m_vivoxId, false, null);
}
}
else if (property == "IsMutedForAll")
{
if (participant.IsMutedForAll)
m_lobbyUserVolumeUI.DisableVoice();
else
m_lobbyUserVolumeUI.EnableVoice();
}
}
}
public void OnVolumeSlide(float volumeNormalized)
{
if (m_channelSession == null || m_vivoxId == null) // Verify initialization, since SetId and OnChannelJoined are called at different times for local vs. remote clients.
return;
int vol = (int)Mathf.Clamp(k_volumeMin + (k_volumeMax - k_volumeMin) * volumeNormalized, k_volumeMin, k_volumeMax); // Clamping as a precaution; if UserVolume somehow got above 1, listeners could be harmed.
bool isSelf = m_channelSession.Participants[m_vivoxId].IsSelf;
if (isSelf)
{
VivoxService.Instance.Client.AudioInputDevices.VolumeAdjustment = vol;
}
else
{
m_channelSession.Participants[m_vivoxId].LocalVolumeAdjustment = vol;
}
}
public void OnMuteToggle(bool isMuted)
{
if (m_channelSession == null || m_vivoxId == null)
return;
bool isSelf = m_channelSession.Participants[m_vivoxId].IsSelf;
if (isSelf)
{
VivoxService.Instance.Client.AudioInputDevices.Muted = isMuted;
}
else
{
m_channelSession.Participants[m_vivoxId].LocalMute = isMuted;
}
}
}
}

38
ProjectSettings/Packages/com.unity.services.vivox/Settings.json


{
"m_Name": "Settings",
"m_Path": "ProjectSettings/Packages/com.unity.services.vivox/Settings.json",
"m_Dictionary": {
"m_DictionaryValues": [
{
"type": "System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089",
"key": "isEnvironmentCustom",
"value": "{\"m_Value\":false}"
},
{
"type": "System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089",
"key": "domain",
"value": "{\"m_Value\":\"mtu1xp.vivox.com\"}"
},
{
"type": "System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089",
"key": "server",
"value": "{\"m_Value\":\"https://unity.vivox.com/appconfig/0bf04-com_u-76576-test\"}"
},
{
"type": "System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089",
"key": "tokenIssuer",
"value": "{\"m_Value\":\"0bf04-com_u-76576-test\"}"
},
{
"type": "System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089",
"key": "tokenKey",
"value": "{\"m_Value\":\"jQr72GjGtoB2lpdtK1GmV1BgtOsFUzK6\"}"
},
{
"type": "System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089",
"key": "pulledCredentialProjectId",
"value": "{\"m_Value\":\"0bf0426b-e1fd-4251-82d0-3eea033ef1ad\"}"
}
]
}
}

121
Assets/Art/Volume/volumeMuted.png

之前 之后

96
Assets/Art/Volume/volumeMuted.png.meta


fileFormatVersion: 2
guid: 1e82decb13fc114438e0314bf6252451
TextureImporter:
internalIDToNameTable: []
externalObjects: {}
serializedVersion: 11
mipmaps:
mipMapMode: 0
enableMipMap: 0
sRGBTexture: 1
linearTexture: 0
fadeOut: 0
borderMipMap: 0
mipMapsPreserveCoverage: 0
alphaTestReferenceValue: 0.5
mipMapFadeDistanceStart: 1
mipMapFadeDistanceEnd: 3
bumpmap:
convertToNormalMap: 0
externalNormalMap: 0
heightScale: 0.25
normalMapFilter: 0
isReadable: 0
streamingMipmaps: 0
streamingMipmapsPriority: 0
vTOnly: 0
grayScaleToAlpha: 0
generateCubemap: 6
cubemapConvolution: 0
seamlessCubemap: 0
textureFormat: 1
maxTextureSize: 2048
textureSettings:
serializedVersion: 2
filterMode: 1
aniso: 1
mipBias: 0
wrapU: 1
wrapV: 1
wrapW: 1
nPOTScale: 0
lightmap: 0
compressionQuality: 50
spriteMode: 1
spriteExtrude: 1
spriteMeshType: 1
alignment: 0
spritePivot: {x: 0.5, y: 0.5}
spritePixelsToUnits: 100
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
spriteGenerateFallbackPhysicsShape: 1
alphaUsage: 1
alphaIsTransparency: 1
spriteTessellationDetail: -1
textureType: 8
textureShape: 1
singleChannelComponent: 0
flipbookRows: 1
flipbookColumns: 1
maxTextureSizeSet: 0
compressionQualitySet: 0
textureFormatSet: 0
ignorePngGamma: 0
applyGammaDecoding: 0
platformSettings:
- serializedVersion: 3
buildTarget: DefaultTexturePlatform
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
spriteSheet:
serializedVersion: 2
sprites: []
outline: []
physicsShape: []
bones: []
spriteID: 5e97eb03825dee720800000000000000
internalID: 0
vertices: []
indices:
edges: []
weights: []
secondaryTextures: []
spritePackingTag:
pSDRemoveMatte: 0
pSDShowRemoveMatteOption: 0
userData:
assetBundleName:
assetBundleVariant:

33
Assets/Scripts/UI/MuteUI.cs


using System.Collections;
using System.Collections.Generic;
using UnityEngine;
namespace LobbyRelaySample.UI
{
public class MuteUI : UIPanelBase
{
[SerializeField]
CanvasGroup m_voiceRings;
public void EnableVoice()
{
Show();
}
public void DisableVoice()
{
Hide(0.4f);
}
/* TODO : If we can hook in the volume from a user, we can plug it in here.
/// <summary>
/// Controls the visibility of the volume rings to show activity levels of the voice channel on this user.
/// </summary>
/// <param name="normalizedVolume"></param>
public void OnSoundDetected(float normalizedVolume)
{
m_voiceRings.alpha = normalizedVolume;
}
*/
}
}

11
Assets/Scripts/UI/MuteUI.cs.meta


fileFormatVersion: 2
guid: f722d3f4131ab52469d430cc5855ee83
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:
正在加载...
取消
保存