diff --git a/Assets/PerfectWorld/Scene/LoginScene.unity b/Assets/PerfectWorld/Scene/LoginScene.unity
index 4de3721598..ce0e50f81b 100644
--- a/Assets/PerfectWorld/Scene/LoginScene.unity
+++ b/Assets/PerfectWorld/Scene/LoginScene.unity
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:bc028fc3c6b7fe9d9851f84da3d784923ccfb38af77605dd57c1e7e12e4c5817
-size 113080
+oid sha256:ce4ce7c6a9576c56a5fb0b213f19e1253afc78d679474cb203612a1e50e8093d
+size 111451
diff --git a/Assets/PerfectWorld/Scripts/UI/Login/LoginScreenUI.cs b/Assets/PerfectWorld/Scripts/UI/Login/LoginScreenUI.cs
index e19fe6fe1a..5e2cbc3791 100644
--- a/Assets/PerfectWorld/Scripts/UI/Login/LoginScreenUI.cs
+++ b/Assets/PerfectWorld/Scripts/UI/Login/LoginScreenUI.cs
@@ -343,8 +343,9 @@ namespace BrewMonster.UI
isDoneNPCRender = true;
isDoneWorldRender = true;
actLoadChar?.Invoke();
+ AudioManager.Instance.StopBGM(1f);
+ WorldMusicController.Instance.InitForWorld(roleInfo.worldtag);
UnityGameSession.EnterWorldAsync(roleInfo, OnEnterWorldComplete);
-
});
#endif
}, null);
diff --git a/Assets/PerfectWorld/Scripts/UI/WorldMap.meta b/Assets/PerfectWorld/Scripts/UI/WorldMap.meta
new file mode 100644
index 0000000000..d30ed9d9f7
--- /dev/null
+++ b/Assets/PerfectWorld/Scripts/UI/WorldMap.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: fce16fcbe8e82ec4588c7fba89c7cb64
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/PerfectWorld/Scripts/UI/DlgWorldMap.cs b/Assets/PerfectWorld/Scripts/UI/WorldMap/DlgWorldMap.cs
similarity index 74%
rename from Assets/PerfectWorld/Scripts/UI/DlgWorldMap.cs
rename to Assets/PerfectWorld/Scripts/UI/WorldMap/DlgWorldMap.cs
index a20a1728ca..425a0028da 100644
--- a/Assets/PerfectWorld/Scripts/UI/DlgWorldMap.cs
+++ b/Assets/PerfectWorld/Scripts/UI/WorldMap/DlgWorldMap.cs
@@ -1,3 +1,4 @@
+using BrewMonster.Network;
using CSNetwork.Common;
using UnityEngine;
using UnityEngine.UI;
@@ -54,10 +55,14 @@ namespace BrewMonster.UI
public override bool Render()
{
- // UpdateHostPlayerPositionImage();
+ UpdateHostPlayerPositionImage();
return base.Render();
}
+
+ Vector3 _hostPlayerPosition;
+ Quaternion _hostPlayerRotation;
+
private void UpdateHostPlayerPositionImage()
{
if (_hostPlayerPositionImage == null)
@@ -65,7 +70,7 @@ namespace BrewMonster.UI
return;
}
- if (!TryGetHostPlayerPosition(out Vector3 hostPosition))
+ if (!TryGetHostPlayerPosition(out _hostPlayerPosition, out _hostPlayerRotation))
{
_hostPlayerPositionImage.enabled = false;
return;
@@ -81,13 +86,16 @@ namespace BrewMonster.UI
_hostPlayerPositionImage.enabled = true;
RectTransform hostPlayerRectTransform = _hostPlayerPositionImage.rectTransform;
hostPlayerRectTransform.anchoredPosition = new Vector2(
- hostPosition.x / _positionFactor,
- hostPosition.z / _positionFactor);
+ _hostPlayerPosition.x / _positionFactor,
+ _hostPlayerPosition.z / _positionFactor);
+
+ hostPlayerRectTransform.localRotation = Quaternion.Euler(0, 0, -_hostPlayerRotation.eulerAngles.y);
}
- private bool TryGetHostPlayerPosition(out Vector3 hostPlayerPosition)
+ private bool TryGetHostPlayerPosition(out Vector3 hostPlayerPosition, out Quaternion hostPlayerRotation)
{
hostPlayerPosition = Vector3.zero;
+ hostPlayerRotation = Quaternion.identity;
CECHostPlayer hostPlayer = GetHostPlayer();
if (hostPlayer == null || hostPlayer.transform == null)
@@ -96,6 +104,7 @@ namespace BrewMonster.UI
}
hostPlayerPosition = hostPlayer.transform.position;
+ hostPlayerRotation = hostPlayer.transform.rotation;
return true;
}
@@ -139,6 +148,20 @@ namespace BrewMonster.UI
}
}
+ ///
+ /// When user click on the map texture.
+ /// We will calculate the world coordinates from the local cursor position. Then move the host player to the world coordinates.
+ ///
+ ///
+ public void OnMapClicked(Vector2 localCursorPosition)
+ {
+ var worldCoordinates = localCursorPosition * _positionFactor;
+ UnityGameSession.c2s_CmdGoto(worldCoordinates.x, 1.0f, worldCoordinates.y);
+
+ // close the map
+ OnCloseButtonClicked();
+ }
+
private void OnCloseButtonClicked()
{
CloseDialogue();
diff --git a/Assets/PerfectWorld/Scripts/UI/DlgWorldMap.cs.meta b/Assets/PerfectWorld/Scripts/UI/WorldMap/DlgWorldMap.cs.meta
similarity index 100%
rename from Assets/PerfectWorld/Scripts/UI/DlgWorldMap.cs.meta
rename to Assets/PerfectWorld/Scripts/UI/WorldMap/DlgWorldMap.cs.meta
diff --git a/Assets/PerfectWorld/Scripts/UI/WorldMap/WorldMapClickHandler.cs b/Assets/PerfectWorld/Scripts/UI/WorldMap/WorldMapClickHandler.cs
new file mode 100644
index 0000000000..e051a5b058
--- /dev/null
+++ b/Assets/PerfectWorld/Scripts/UI/WorldMap/WorldMapClickHandler.cs
@@ -0,0 +1,59 @@
+using UnityEngine;
+using UnityEngine.EventSystems;
+
+namespace BrewMonster.UI
+{
+ public class WorldMapClickHandler : MonoBehaviour, IPointerClickHandler
+ {
+ [Tooltip("The RectTransform of the Map Image (Usually this GameObject)")]
+ private RectTransform mapRectTransform;
+
+ [SerializeField] private RectTransform _hostPlayerPositionImage;
+
+ public DlgWorldMap dlgWorldMap;
+
+ // The host player player (0,0,0) is not at the center of the map. It usually has an offset that we have to calculate at Awake
+ private Vector2 _hostPlayerOffsetPosition;
+
+ private void Awake()
+ {
+ // Get the RectTransform of the map
+ mapRectTransform = GetComponent();
+
+ CalculateHostPlayerOffsetPosition();
+ }
+
+ private void CalculateHostPlayerOffsetPosition()
+ {
+ _hostPlayerOffsetPosition = _hostPlayerPositionImage.anchoredPosition;
+
+ // if the max/min of the anchor is 0.5 0.5, then the host player is at the center of the map
+ // however we have to calculate the offset of the player because it is not at the center of the map
+ // we can calculate the offset by the max/min of the anchor
+ var maxAnchor = _hostPlayerPositionImage.anchorMax;
+ var minAnchor = _hostPlayerPositionImage.anchorMin;
+ _hostPlayerOffsetPosition = new Vector2((maxAnchor.x - 0.5f) * mapRectTransform.rect.width, (maxAnchor.y - 0.5f) * mapRectTransform.rect.height);
+ }
+
+ // This triggers automatically when the user clicks/taps on this Image
+ public void OnPointerClick(PointerEventData eventData)
+ {
+ Vector2 localCursorPosition;
+
+ // Convert the screen click position to local anchored position inside the Map
+ bool isConverted = RectTransformUtility.ScreenPointToLocalPointInRectangle(
+ mapRectTransform,
+ eventData.position,
+ eventData.pressEventCamera,
+ out localCursorPosition
+ );
+
+ if (isConverted)
+ {
+ // convert the localCursorPosition to the local position of the host player position image
+ localCursorPosition -= _hostPlayerOffsetPosition;
+ dlgWorldMap.OnMapClicked(localCursorPosition);
+ }
+ }
+ }
+}
diff --git a/Assets/PerfectWorld/Scripts/UI/WorldMap/WorldMapClickHandler.cs.meta b/Assets/PerfectWorld/Scripts/UI/WorldMap/WorldMapClickHandler.cs.meta
new file mode 100644
index 0000000000..9199d3ecf5
--- /dev/null
+++ b/Assets/PerfectWorld/Scripts/UI/WorldMap/WorldMapClickHandler.cs.meta
@@ -0,0 +1,2 @@
+fileFormatVersion: 2
+guid: 876ab9894018f2b4cb4a0b04bf534bc5
\ No newline at end of file
diff --git a/Assets/Prefabs/UI/DlgWorldMap.prefab b/Assets/Prefabs/UI/DlgWorldMap.prefab
index 245de697af..3eafab46a6 100644
--- a/Assets/Prefabs/UI/DlgWorldMap.prefab
+++ b/Assets/Prefabs/UI/DlgWorldMap.prefab
@@ -1,5 +1,80 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
+--- !u!1 &191621185379502263
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 9142400375056319150}
+ - component: {fileID: 7949922842883969624}
+ - component: {fileID: 6790297770241223980}
+ m_Layer: 0
+ m_Name: click_pos
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 0
+--- !u!224 &9142400375056319150
+RectTransform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 191621185379502263}
+ 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: 7169122999130120872}
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+ m_AnchorMin: {x: 0.5, y: 0.5}
+ m_AnchorMax: {x: 0.5, y: 0.5}
+ m_AnchoredPosition: {x: 0, y: 0}
+ m_SizeDelta: {x: 15, y: 15}
+ m_Pivot: {x: 0.5, y: 0.5}
+--- !u!222 &7949922842883969624
+CanvasRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 191621185379502263}
+ m_CullTransparentMesh: 1
+--- !u!114 &6790297770241223980
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 191621185379502263}
+ 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: 0}
+ 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 &936441858863998774
GameObject:
m_ObjectHideFlags: 0
@@ -35,7 +110,7 @@ RectTransform:
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0.5, y: 0.5}
m_AnchorMax: {x: 0.5, y: 0.5}
- m_AnchoredPosition: {x: 403.03613, y: 341.03613}
+ m_AnchoredPosition: {x: 549, y: 465}
m_SizeDelta: {x: 58, y: 58}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &6772256914059310038
@@ -286,7 +361,7 @@ MonoBehaviour:
imageProgress: {fileID: 0}
mapImage: {fileID: 1174346096914174862}
_hostPlayerPositionImage: {fileID: 4036230907032538800}
- _positionFactor: 2.5
+ _positionFactor: 1.8
_closeButton: {fileID: 8858186809287203567}
--- !u!1 &8308536083041954008
GameObject:
@@ -363,6 +438,81 @@ MonoBehaviour:
m_FillOrigin: 0
m_UseSpriteMesh: 0
m_PixelsPerUnitMultiplier: 1
+--- !u!1 &8900623989843312765
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 1510574663178069641}
+ - component: {fileID: 5533213955690836106}
+ - component: {fileID: 7414570214724661608}
+ m_Layer: 0
+ m_Name: hostplayerpos_debug
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 0
+--- !u!224 &1510574663178069641
+RectTransform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 8900623989843312765}
+ 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: 7169122999130120872}
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+ m_AnchorMin: {x: 0.5, y: 0.518}
+ m_AnchorMax: {x: 0.5, y: 0.518}
+ m_AnchoredPosition: {x: 0, y: 0}
+ m_SizeDelta: {x: 13, y: 16}
+ m_Pivot: {x: 0.5, y: 0.5}
+--- !u!222 &5533213955690836106
+CanvasRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 8900623989843312765}
+ m_CullTransparentMesh: 1
+--- !u!114 &7414570214724661608
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 8900623989843312765}
+ 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: 448046091, guid: 99520ceed6182dd408f2da040fe0c033, 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 &8924313797425690832
GameObject:
m_ObjectHideFlags: 0
@@ -374,6 +524,7 @@ GameObject:
- component: {fileID: 7169122999130120872}
- component: {fileID: 7283747291599937432}
- component: {fileID: 1174346096914174862}
+ - component: {fileID: 4521997594693838426}
m_Layer: 0
m_Name: MapTexture
m_TagString: Untagged
@@ -394,12 +545,14 @@ RectTransform:
m_ConstrainProportionsScale: 0
m_Children:
- {fileID: 5906545349664091413}
+ - {fileID: 1510574663178069641}
+ - {fileID: 9142400375056319150}
m_Father: {fileID: 7323734624486819451}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0.5, y: 0.5}
m_AnchorMax: {x: 0.5, y: 0.5}
- m_AnchoredPosition: {x: 0, y: 0}
- m_SizeDelta: {x: 1024, y: 1024}
+ m_AnchoredPosition: {x: -6.0056, y: -6.0056}
+ m_SizeDelta: {x: 1408.0024, y: 1408.0024}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &7283747291599937432
CanvasRenderer:
@@ -439,3 +592,17 @@ MonoBehaviour:
m_FillOrigin: 0
m_UseSpriteMesh: 0
m_PixelsPerUnitMultiplier: 1
+--- !u!114 &4521997594693838426
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 8924313797425690832}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 876ab9894018f2b4cb4a0b04bf534bc5, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ _hostPlayerPositionImage: {fileID: 5906545349664091413}
+ dlgWorldMap: {fileID: 135853640611757204}
diff --git a/Assets/Prefabs/UI/Music.prefab b/Assets/Prefabs/UI/Music.prefab
new file mode 100644
index 0000000000..e9259a9b32
--- /dev/null
+++ b/Assets/Prefabs/UI/Music.prefab
@@ -0,0 +1,314 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!1 &2838129733766203984
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 3636302681040170949}
+ - component: {fileID: 4656951194032224}
+ m_Layer: 0
+ m_Name: SFX
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!4 &3636302681040170949
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 2838129733766203984}
+ serializedVersion: 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: 4292995824318243454}
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!114 &4656951194032224
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 2838129733766203984}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 4cfa292fff0815d40b82f32256b3f2cc, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ _moveSoundSource: {fileID: 8780839799255791761}
+--- !u!1 &6634120867767479402
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 4292995824318243454}
+ - component: {fileID: 3455241641456728159}
+ - component: {fileID: 8780839799255791761}
+ - component: {fileID: 8959945188973705721}
+ - component: {fileID: 6104956088685348673}
+ - component: {fileID: 8206320370371461788}
+ m_Layer: 0
+ m_Name: Music
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!4 &4292995824318243454
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 6634120867767479402}
+ serializedVersion: 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:
+ - {fileID: 3636302681040170949}
+ m_Father: {fileID: 0}
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!114 &3455241641456728159
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 6634120867767479402}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: ab7ebb437fbd3fb41a7300a381fcab00, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ bgmSource: {fileID: 8780839799255791761}
+ _bgmMixerGroup: {fileID: 1439606312574676259, guid: 9c6a7598ca0dfcd4fa51470ebbdd7549, type: 2}
+ _ambienceMixerGroup: {fileID: 661067059137401939, guid: 9c6a7598ca0dfcd4fa51470ebbdd7549, type: 2}
+--- !u!82 &8780839799255791761
+AudioSource:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 6634120867767479402}
+ m_Enabled: 1
+ serializedVersion: 4
+ OutputAudioMixerGroup: {fileID: 0}
+ m_audioClip: {fileID: 0}
+ m_Resource: {fileID: 0}
+ m_PlayOnAwake: 1
+ m_Volume: 1
+ m_Pitch: 1
+ Loop: 1
+ Mute: 0
+ Spatialize: 0
+ SpatializePostEffects: 0
+ Priority: 128
+ DopplerLevel: 1
+ MinDistance: 1
+ MaxDistance: 500
+ Pan2D: 0
+ rolloffMode: 0
+ BypassEffects: 0
+ BypassListenerEffects: 0
+ BypassReverbZones: 0
+ rolloffCustomCurve:
+ serializedVersion: 2
+ m_Curve:
+ - serializedVersion: 3
+ time: 0
+ value: 1
+ inSlope: 0
+ outSlope: 0
+ tangentMode: 0
+ weightedMode: 0
+ inWeight: 0.33333334
+ outWeight: 0.33333334
+ - serializedVersion: 3
+ time: 1
+ value: 0
+ inSlope: 0
+ outSlope: 0
+ tangentMode: 0
+ weightedMode: 0
+ inWeight: 0.33333334
+ outWeight: 0.33333334
+ m_PreInfinity: 2
+ m_PostInfinity: 2
+ m_RotationOrder: 4
+ panLevelCustomCurve:
+ serializedVersion: 2
+ m_Curve:
+ - serializedVersion: 3
+ time: 0
+ value: 0
+ inSlope: 0
+ outSlope: 0
+ tangentMode: 0
+ weightedMode: 0
+ inWeight: 0.33333334
+ outWeight: 0.33333334
+ m_PreInfinity: 2
+ m_PostInfinity: 2
+ m_RotationOrder: 4
+ spreadCustomCurve:
+ serializedVersion: 2
+ m_Curve:
+ - serializedVersion: 3
+ time: 0
+ value: 0
+ inSlope: 0
+ outSlope: 0
+ tangentMode: 0
+ weightedMode: 0
+ inWeight: 0.33333334
+ outWeight: 0.33333334
+ m_PreInfinity: 2
+ m_PostInfinity: 2
+ m_RotationOrder: 4
+ reverbZoneMixCustomCurve:
+ serializedVersion: 2
+ m_Curve:
+ - serializedVersion: 3
+ time: 0
+ value: 1
+ inSlope: 0
+ outSlope: 0
+ tangentMode: 0
+ weightedMode: 0
+ inWeight: 0.33333334
+ outWeight: 0.33333334
+ m_PreInfinity: 2
+ m_PostInfinity: 2
+ m_RotationOrder: 4
+--- !u!82 &8959945188973705721
+AudioSource:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 6634120867767479402}
+ m_Enabled: 1
+ serializedVersion: 4
+ OutputAudioMixerGroup: {fileID: 0}
+ m_audioClip: {fileID: 0}
+ m_Resource: {fileID: 0}
+ m_PlayOnAwake: 1
+ m_Volume: 1
+ m_Pitch: 1
+ Loop: 0
+ Mute: 0
+ Spatialize: 0
+ SpatializePostEffects: 0
+ Priority: 128
+ DopplerLevel: 1
+ MinDistance: 1
+ MaxDistance: 500
+ Pan2D: 0
+ rolloffMode: 0
+ BypassEffects: 0
+ BypassListenerEffects: 0
+ BypassReverbZones: 0
+ rolloffCustomCurve:
+ serializedVersion: 2
+ m_Curve:
+ - serializedVersion: 3
+ time: 0
+ value: 1
+ inSlope: 0
+ outSlope: 0
+ tangentMode: 0
+ weightedMode: 0
+ inWeight: 0.33333334
+ outWeight: 0.33333334
+ - serializedVersion: 3
+ time: 1
+ value: 0
+ inSlope: 0
+ outSlope: 0
+ tangentMode: 0
+ weightedMode: 0
+ inWeight: 0.33333334
+ outWeight: 0.33333334
+ m_PreInfinity: 2
+ m_PostInfinity: 2
+ m_RotationOrder: 4
+ panLevelCustomCurve:
+ serializedVersion: 2
+ m_Curve:
+ - serializedVersion: 3
+ time: 0
+ value: 0
+ inSlope: 0
+ outSlope: 0
+ tangentMode: 0
+ weightedMode: 0
+ inWeight: 0.33333334
+ outWeight: 0.33333334
+ m_PreInfinity: 2
+ m_PostInfinity: 2
+ m_RotationOrder: 4
+ spreadCustomCurve:
+ serializedVersion: 2
+ m_Curve:
+ - serializedVersion: 3
+ time: 0
+ value: 0
+ inSlope: 0
+ outSlope: 0
+ tangentMode: 0
+ weightedMode: 0
+ inWeight: 0.33333334
+ outWeight: 0.33333334
+ m_PreInfinity: 2
+ m_PostInfinity: 2
+ m_RotationOrder: 4
+ reverbZoneMixCustomCurve:
+ serializedVersion: 2
+ m_Curve:
+ - serializedVersion: 3
+ time: 0
+ value: 1
+ inSlope: 0
+ outSlope: 0
+ tangentMode: 0
+ weightedMode: 0
+ inWeight: 0.33333334
+ outWeight: 0.33333334
+ m_PreInfinity: 2
+ m_PostInfinity: 2
+ m_RotationOrder: 4
+--- !u!81 &6104956088685348673
+AudioListener:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 6634120867767479402}
+ m_Enabled: 1
+--- !u!114 &8206320370371461788
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 6634120867767479402}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: f520c80aab01bbc45aa22010a90dfd66, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ _worldMusicDB: {fileID: 11400000, guid: 7602c1f71697aae42a7751212c5144dc, type: 2}
diff --git a/Assets/Prefabs/UI/Music.prefab.meta b/Assets/Prefabs/UI/Music.prefab.meta
new file mode 100644
index 0000000000..ef403827e9
--- /dev/null
+++ b/Assets/Prefabs/UI/Music.prefab.meta
@@ -0,0 +1,7 @@
+fileFormatVersion: 2
+guid: 2c6625b7f2f4bc2469813fb85db84114
+PrefabImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant: