Update audio manager

This commit is contained in:
2026-05-01 01:25:02 +07:00
parent 3a553379ec
commit b656b750dd
13 changed files with 501 additions and 181 deletions

File diff suppressed because one or more lines are too long

View File

@@ -5,7 +5,16 @@
</component> </component>
<component name="ChangeListManager"> <component name="ChangeListManager">
<list default="true" id="f9183c68-daf0-43b8-be4c-fad79983f91b" name="Changes" comment=""> <list default="true" id="f9183c68-daf0-43b8-be4c-fad79983f91b" name="Changes" comment="">
<change beforePath="$PROJECT_DIR$/.gemini-workspace-history/active-context.md" beforeDir="false" afterPath="$PROJECT_DIR$/.gemini-workspace-history/active-context.md" afterDir="false" />
<change beforePath="$PROJECT_DIR$/.idea/.idea.HALLUCINATE/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/.idea.HALLUCINATE/.idea/workspace.xml" afterDir="false" /> <change beforePath="$PROJECT_DIR$/.idea/.idea.HALLUCINATE/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/.idea.HALLUCINATE/.idea/workspace.xml" afterDir="false" />
<change beforePath="$PROJECT_DIR$/Assets/Audio/UI.mixer" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/Assets/Audio/UI.mixer.meta" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/Assets/CuaDangPrototype[Don'tMove]/Seagram tfb SDF.asset" beforeDir="false" afterPath="$PROJECT_DIR$/Assets/CuaDangPrototype[Don'tMove]/Seagram tfb SDF.asset" afterDir="false" />
<change beforePath="$PROJECT_DIR$/Assets/Scripts/Audio/AudioManager.cs" beforeDir="false" afterPath="$PROJECT_DIR$/Assets/Scripts/Audio/AudioManager.cs" afterDir="false" />
<change beforePath="$PROJECT_DIR$/Assets/Scripts/UI/SettingsController.cs" beforeDir="false" afterPath="$PROJECT_DIR$/Assets/Scripts/UI/SettingsController.cs" afterDir="false" />
<change beforePath="$PROJECT_DIR$/Assets/Scripts/UI/UIManager.cs" beforeDir="false" afterPath="$PROJECT_DIR$/Assets/Scripts/UI/UIManager.cs" afterDir="false" />
<change beforePath="$PROJECT_DIR$/Assets/Settings/Project Setting/AudioDatabase.asset" beforeDir="false" afterPath="$PROJECT_DIR$/Assets/Settings/Project Setting/AudioDatabase.asset" afterDir="false" />
<change beforePath="$PROJECT_DIR$/Assets/Third Parties/TextMesh Pro/Resources/Fonts &amp; Materials/LiberationSans SDF - Fallback.asset" beforeDir="false" afterPath="$PROJECT_DIR$/Assets/Third Parties/TextMesh Pro/Resources/Fonts &amp; Materials/LiberationSans SDF - Fallback.asset" afterDir="false" />
</list> </list>
<option name="SHOW_DIALOG" value="false" /> <option name="SHOW_DIALOG" value="false" />
<option name="HIGHLIGHT_CONFLICTS" value="true" /> <option name="HIGHLIGHT_CONFLICTS" value="true" />
@@ -13,7 +22,7 @@
<option name="LAST_RESOLUTION" value="IGNORE" /> <option name="LAST_RESOLUTION" value="IGNORE" />
</component> </component>
<component name="EmbeddingIndexingInfo"> <component name="EmbeddingIndexingInfo">
<option name="cachedIndexableFilesCount" value="13" /> <option name="cachedIndexableFilesCount" value="15" />
<option name="fileBasedEmbeddingIndicesEnabled" value="true" /> <option name="fileBasedEmbeddingIndicesEnabled" value="true" />
</component> </component>
<component name="Git.Settings"> <component name="Git.Settings">
@@ -146,7 +155,8 @@
<workItem from="1777376778745" duration="10727000" /> <workItem from="1777376778745" duration="10727000" />
<workItem from="1777392719306" duration="13382000" /> <workItem from="1777392719306" duration="13382000" />
<workItem from="1777443280908" duration="5223000" /> <workItem from="1777443280908" duration="5223000" />
<workItem from="1777484328779" duration="29344000" /> <workItem from="1777484328779" duration="32427000" />
<workItem from="1777568077522" duration="5137000" />
</task> </task>
<servers /> <servers />
</component> </component>

View File

@@ -0,0 +1,218 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!243 &-6431947565845596828
AudioMixerGroupController:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_Name: UI
m_AudioMixer: {fileID: 24100000}
m_GroupID: 08e27948b88ac0b42a416d718edb17c0
m_Children: []
m_Volume: cff6dd6ce8758cd4dae7e14ae4652999
m_Pitch: 6a8f2ec253d1ca44780ec280ecc9a962
m_Send: 00000000000000000000000000000000
m_Effects:
- {fileID: -5023060638215396674}
m_UserColorIndex: 0
m_Mute: 0
m_Solo: 0
m_BypassEffects: 0
--- !u!243 &-6021856956552147437
AudioMixerGroupController:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_Name: Music
m_AudioMixer: {fileID: 24100000}
m_GroupID: 0fe7eccc1b943f14cb7dd0fe99d212a0
m_Children: []
m_Volume: f78d37150b1160c42835fdd3acc80419
m_Pitch: a19937e3ff86e0c4dbc4f2b22d7f51fb
m_Send: 00000000000000000000000000000000
m_Effects:
- {fileID: 1876758863269364064}
m_UserColorIndex: 0
m_Mute: 0
m_Solo: 0
m_BypassEffects: 0
--- !u!244 &-5023060638215396674
AudioMixerEffectController:
m_ObjectHideFlags: 3
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_Name:
m_EffectID: 7a6d00ec541efe14991fab0268bc7789
m_EffectName: Attenuation
m_MixLevel: cd404eab1b4bc7b47858f5d806ad2127
m_Parameters: []
m_SendTarget: {fileID: 0}
m_EnableWetMix: 0
m_Bypass: 0
--- !u!244 &-4735665692033575105
AudioMixerEffectController:
m_ObjectHideFlags: 3
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_Name:
m_EffectID: 99b4802d78d59af4a9d80fa51aaf8988
m_EffectName: Attenuation
m_MixLevel: 57ee0498571e05143ac81a47522f98dd
m_Parameters: []
m_SendTarget: {fileID: 0}
m_EnableWetMix: 0
m_Bypass: 0
--- !u!243 &-4700234642923864785
AudioMixerGroupController:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_Name: VFX
m_AudioMixer: {fileID: 24100000}
m_GroupID: 09fab5b9bf43ccc419ad6fa12379ed03
m_Children: []
m_Volume: 3e949b4e1ef6b2e4da38dc5ede9bdc0f
m_Pitch: 6cba8da6210ffe341b284ee7af40b74d
m_Send: 00000000000000000000000000000000
m_Effects:
- {fileID: -4735665692033575105}
m_UserColorIndex: 0
m_Mute: 0
m_Solo: 0
m_BypassEffects: 0
--- !u!244 &-233787013272730643
AudioMixerEffectController:
m_ObjectHideFlags: 3
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_Name:
m_EffectID: dadc06cef90e6e741925b12d70aedf35
m_EffectName: Attenuation
m_MixLevel: 854b23372ef4a084ea3dff87e64efe7b
m_Parameters: []
m_SendTarget: {fileID: 0}
m_EnableWetMix: 0
m_Bypass: 0
--- !u!241 &24100000
AudioMixerController:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_Name: MainMixer
m_OutputGroup: {fileID: 0}
m_MasterGroup: {fileID: 24300002}
m_Snapshots:
- {fileID: 24500006}
m_StartSnapshot: {fileID: 24500006}
m_SuspendThreshold: -80
m_EnableSuspend: 1
m_UpdateMode: 0
m_ExposedParameters:
- guid: b4d6e1f3e3ef67b4f8c9769b4e5c4c12
name: MasterVolume
- guid: f78d37150b1160c42835fdd3acc80419
name: MusicVolume
- guid: ac393bc15bcf90f439746ed2111fdcdf
name: PlayerVolume
- guid: cff6dd6ce8758cd4dae7e14ae4652999
name: UIVolume
- guid: 3e949b4e1ef6b2e4da38dc5ede9bdc0f
name: VFXVolume
m_AudioMixerGroupViews:
- guids:
- 92c420f631765d9428b1e6bdeb3d374b
- 0fe7eccc1b943f14cb7dd0fe99d212a0
- 09fab5b9bf43ccc419ad6fa12379ed03
- 08e27948b88ac0b42a416d718edb17c0
- 02dbab7fb589edf40a80dc16f47b895d
name: View
m_CurrentViewIndex: 0
m_TargetSnapshot: {fileID: 24500006}
--- !u!243 &24300002
AudioMixerGroupController:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_Name: Master
m_AudioMixer: {fileID: 24100000}
m_GroupID: 92c420f631765d9428b1e6bdeb3d374b
m_Children:
- {fileID: -6021856956552147437}
- {fileID: -4700234642923864785}
- {fileID: -6431947565845596828}
- {fileID: 5458705978263712925}
m_Volume: b4d6e1f3e3ef67b4f8c9769b4e5c4c12
m_Pitch: eb965b68ec544064b9f6381276cf09ef
m_Send: 00000000000000000000000000000000
m_Effects:
- {fileID: 24400004}
m_UserColorIndex: 0
m_Mute: 0
m_Solo: 0
m_BypassEffects: 0
--- !u!244 &24400004
AudioMixerEffectController:
m_ObjectHideFlags: 3
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_Name:
m_EffectID: d380a836e9d148c49be2931d8b74877f
m_EffectName: Attenuation
m_MixLevel: 08d6aaae3443a5a4299f8b8b55ed0991
m_Parameters: []
m_SendTarget: {fileID: 0}
m_EnableWetMix: 0
m_Bypass: 0
--- !u!245 &24500006
AudioMixerSnapshotController:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_Name: Snapshot
m_AudioMixer: {fileID: 24100000}
m_SnapshotID: 817fd0c74ed3b3440bd51ffbb5cc90a3
m_FloatValues: {}
m_TransitionOverrides: {}
--- !u!244 &1876758863269364064
AudioMixerEffectController:
m_ObjectHideFlags: 3
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_Name:
m_EffectID: 2f7a221eb240c13439d12ce1c978a41d
m_EffectName: Attenuation
m_MixLevel: aa1f8d271c9ce884f813b72b5d42ef3b
m_Parameters: []
m_SendTarget: {fileID: 0}
m_EnableWetMix: 0
m_Bypass: 0
--- !u!243 &5458705978263712925
AudioMixerGroupController:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_Name: Player
m_AudioMixer: {fileID: 24100000}
m_GroupID: 02dbab7fb589edf40a80dc16f47b895d
m_Children: []
m_Volume: ac393bc15bcf90f439746ed2111fdcdf
m_Pitch: 8937f5f6d4f6f0d42be05ea133b41007
m_Send: 00000000000000000000000000000000
m_Effects:
- {fileID: -233787013272730643}
m_UserColorIndex: 0
m_Mute: 0
m_Solo: 0
m_BypassEffects: 0

View File

@@ -1,65 +0,0 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!241 &24100000
AudioMixerController:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_Name: UI
m_OutputGroup: {fileID: 0}
m_MasterGroup: {fileID: 24300002}
m_Snapshots:
- {fileID: 24500006}
m_StartSnapshot: {fileID: 24500006}
m_SuspendThreshold: -80
m_EnableSuspend: 1
m_UpdateMode: 0
m_ExposedParameters: []
m_AudioMixerGroupViews: []
m_CurrentViewIndex: 0
m_TargetSnapshot: {fileID: 24500006}
--- !u!243 &24300002
AudioMixerGroupController:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_Name: Master
m_AudioMixer: {fileID: 24100000}
m_GroupID: 92c420f631765d9428b1e6bdeb3d374b
m_Children: []
m_Volume: b4d6e1f3e3ef67b4f8c9769b4e5c4c12
m_Pitch: eb965b68ec544064b9f6381276cf09ef
m_Send: 00000000000000000000000000000000
m_Effects:
- {fileID: 24400004}
m_UserColorIndex: 0
m_Mute: 0
m_Solo: 0
m_BypassEffects: 0
--- !u!244 &24400004
AudioMixerEffectController:
m_ObjectHideFlags: 3
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_Name:
m_EffectID: d380a836e9d148c49be2931d8b74877f
m_EffectName: Attenuation
m_MixLevel: 08d6aaae3443a5a4299f8b8b55ed0991
m_Parameters: []
m_SendTarget: {fileID: 0}
m_EnableWetMix: 0
m_Bypass: 0
--- !u!245 &24500006
AudioMixerSnapshotController:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_Name: Snapshot
m_AudioMixer: {fileID: 24100000}
m_SnapshotID: 817fd0c74ed3b3440bd51ffbb5cc90a3
m_FloatValues: {}
m_TransitionOverrides: {}

File diff suppressed because one or more lines are too long

View File

@@ -30,6 +30,11 @@ namespace Hallucinate.Audio
if (database != null) database.Initialize(); if (database != null) database.Initialize();
} }
private void Start()
{
ApplyAllVolumes();
}
private void InitializePool() private void InitializePool()
{ {
_pool = new List<AudioSource>(); _pool = new List<AudioSource>();
@@ -43,6 +48,27 @@ namespace Hallucinate.Audio
} }
} }
public void ApplyAllVolumes()
{
SetVolume("MasterVolume", PlayerPrefs.GetFloat("MasterVolume", 80f));
SetVolume("MusicVolume", PlayerPrefs.GetFloat("MusicVolume", 80f));
SetVolume("VFXVolume", PlayerPrefs.GetFloat("VFXVolume", 80f));
SetVolume("PlayerVolume", PlayerPrefs.GetFloat("PlayerVolume", 80f));
SetVolume("UIVolume", PlayerPrefs.GetFloat("UIVolume", 80f));
}
public void SetVolume(string key, float volume)
{
if (defaultGroup == null || defaultGroup.audioMixer == null) return;
// Chuyển đổi từ 0-100 sang dB (-80f đến 0f hoặc 20f tùy mixer)
// Công thức: dB = 20 * log10(volume / 100)
float db = volume <= 0.001f ? -80f : Mathf.Log10(volume / 100f) * 20f;
// Đảm bảo Parameter đã được EXPOSE trong AudioMixer với tên tương ứng (MasterVolume, MusicVolume, etc.)
defaultGroup.audioMixer.SetFloat(key, db);
}
public void Play(string sampleName, float volumeMult = 1f, float pitchMult = 1f, Vector3? position = null) public void Play(string sampleName, float volumeMult = 1f, float pitchMult = 1f, Vector3? position = null)
{ {
if (database == null) return; if (database == null) return;

View File

@@ -31,9 +31,13 @@ namespace Hallucinate.UI
private float _sliderMin, _sliderMax; private float _sliderMin, _sliderMax;
// Osu-style Volume Overlay // Osu-style Volume Overlay
private VisualElement _volumeOverlay; private VisualElement _volumeContainer;
private VisualElement _masterRing;
private Label _masterVolLabel; private Label _masterVolLabel;
private Dictionary<string, (VisualElement ring, Label label)> _subRings = new Dictionary<string, (VisualElement, Label)>();
private string _hoveredSubVolume = null;
private float _masterVol = 80f; private float _masterVol = 80f;
private int _overlayActiveCount = 0;
public override void Initialize(VisualElement uxmlRoot, UIManager manager) public override void Initialize(VisualElement uxmlRoot, UIManager manager)
{ {
@@ -43,9 +47,9 @@ namespace Hallucinate.UI
_tabTitle = root.Q<Label>("TabTitle"); _tabTitle = root.Q<Label>("TabTitle");
_content = root.Q<ScrollView>("SettingsContent"); _content = root.Q<ScrollView>("SettingsContent");
// Osu Volume Logic - Registering on Root for Global Wheel Catch // Global Volume Catch - Use TrickleDown to catch events before they are consumed by children (like ScrollViews)
root.RegisterCallback<WheelEvent>(OnMouseWheel); uiManager.Root.RegisterCallback<WheelEvent>(OnMouseWheel, TrickleDown.TrickleDown);
SetupVolumeOverlay(); SetupHierarchicalVolumeOverlay();
root.RegisterCallback<PointerDownEvent>(evt => { root.RegisterCallback<PointerDownEvent>(evt => {
if (evt.target == root) uiManager.ToggleSettings(); if (evt.target == root) uiManager.ToggleSettings();
@@ -67,88 +71,191 @@ namespace Hallucinate.UI
SwitchTab("GENERAL"); SwitchTab("GENERAL");
} }
private void SetupVolumeOverlay() private void SetupHierarchicalVolumeOverlay()
{ {
_volumeOverlay = new VisualElement(); _volumeContainer = new VisualElement();
_volumeOverlay.style.position = Position.Absolute; _volumeContainer.name = "GlobalVolumeOverlay";
_volumeOverlay.style.right = 40; _volumeContainer.style.position = Position.Absolute;
_volumeOverlay.style.top = Length.Percent(40); _volumeContainer.style.right = 50;
_volumeOverlay.style.width = 120; _volumeContainer.style.bottom = 50;
_volumeOverlay.style.height = 120; _volumeContainer.style.width = 300;
_volumeOverlay.style.backgroundColor = new Color(0, 0, 0, 0.8f); _volumeContainer.style.height = 300;
_volumeOverlay.style.borderTopLeftRadius = 60; _volumeContainer.style.display = DisplayStyle.None;
_volumeOverlay.style.borderTopRightRadius = 60; _volumeContainer.pickingMode = PickingMode.Ignore;
_volumeOverlay.style.borderBottomLeftRadius = 60;
_volumeOverlay.style.borderBottomRightRadius = 60; // Add to UIManager root so it stays even when Settings is hidden
_volumeOverlay.style.borderTopWidth = 4; uiManager.Root.Add(_volumeContainer);
_volumeOverlay.style.borderBottomWidth = 4;
_volumeOverlay.style.borderLeftWidth = 4;
_volumeOverlay.style.borderRightWidth = 4;
_volumeOverlay.style.borderTopColor = Color.cyan;
_volumeOverlay.style.borderBottomColor = Color.cyan;
_volumeOverlay.style.borderLeftColor = Color.cyan;
_volumeOverlay.style.borderRightColor = Color.cyan;
_volumeOverlay.style.justifyContent = Justify.Center;
_volumeOverlay.style.alignItems = Align.Center;
_volumeOverlay.style.display = DisplayStyle.None;
_volumeOverlay.pickingMode = PickingMode.Ignore;
_masterVolLabel = new Label("80%"); // Master Ring (Bottom Right)
_masterVolLabel.style.color = Color.white; _masterRing = CreateRing("Master", 120, cyan: true);
_masterVolLabel.style.fontSize = 24; _masterRing.style.right = 0;
_masterVolLabel.style.unityFontStyleAndWeight = FontStyle.Bold; _masterRing.style.bottom = 0;
_volumeOverlay.Add(_masterVolLabel); _masterVolLabel = _masterRing.Q<Label>();
_volumeContainer.Add(_masterRing);
root.Add(_volumeOverlay); // Sub Rings (Music, VFX, Player, UI)
string[] subs = { "MusicVolume", "VFXVolume", "PlayerVolume", "UIVolume" };
string[] shortNames = { "MUS", "VFX", "PLY", "UI" };
// Layout sub-rings in an arc around Master
for (int i = 0; i < subs.Length; i++)
{
var ring = CreateRing(shortNames[i], 70, false);
// Angle 0 = Top, Angle 90 = Left
float angle = (i * 30f) * Mathf.Deg2Rad;
float radius = 140f;
// right moves element to the LEFT, bottom moves element UP
// Starting from top (right=25, bottom=140+25) to left (right=140+25, bottom=25)
ring.style.right = 25 + Mathf.Sin(angle) * radius;
ring.style.bottom = 25 + Mathf.Cos(angle) * radius;
string key = subs[i];
ring.RegisterCallback<PointerEnterEvent>(evt => _hoveredSubVolume = key);
ring.RegisterCallback<PointerLeaveEvent>(evt => { if (_hoveredSubVolume == key) _hoveredSubVolume = null; });
ring.pickingMode = PickingMode.Position; // Allow hover detection
_subRings[key] = (ring, ring.Q<Label>());
_volumeContainer.Add(ring);
}
}
private VisualElement CreateRing(string text, float size, bool cyan)
{
var ring = new VisualElement();
ring.style.width = size;
ring.style.height = size;
ring.style.backgroundColor = new Color(0, 0, 0, 0.85f);
ring.style.borderTopLeftRadius = size / 2;
ring.style.borderTopRightRadius = size / 2;
ring.style.borderBottomLeftRadius = size / 2;
ring.style.borderBottomRightRadius = size / 2;
ring.style.borderTopWidth = 3;
ring.style.borderBottomWidth = 3;
ring.style.borderLeftWidth = 3;
ring.style.borderRightWidth = 3;
ring.style.borderTopColor = ring.style.borderBottomColor = ring.style.borderLeftColor = ring.style.borderRightColor = cyan ? Color.cyan : new Color(0.7f, 0.7f, 0.7f);
ring.style.justifyContent = Justify.Center;
ring.style.alignItems = Align.Center;
ring.style.position = Position.Absolute;
var label = new Label("80%");
label.style.color = Color.white;
label.style.fontSize = size * 0.25f;
label.style.unityFontStyleAndWeight = FontStyle.Bold;
ring.Add(label);
var title = new Label(text);
title.style.color = Color.gray;
title.style.fontSize = size * 0.15f;
title.style.position = Position.Absolute;
title.style.bottom = size * 0.15f;
ring.Add(title);
return ring;
} }
private void OnMouseWheel(WheelEvent evt) private void OnMouseWheel(WheelEvent evt)
{ {
// Osu style: Volume control with scroll wheel // Debug Log to see if event is even reaching here
// Only apply if in the SOUND tab Debug.Log($"[SettingsController] Mouse Wheel Detected. Settings Open: {uiManager.IsSettingsOpen}");
if (_activeTab != "SOUND") return;
if (_hoveredSlider != null) // Do not control volume if we are in MainMenu (unless Settings is explicitly open)
// Fix: Check if MainMenu is actually visible (Flex), not just exists in hierarchy
var mainMenuRoot = uiManager.Root.Q<VisualElement>("MainMenuRoot");
bool isMainMenuVisible = mainMenuRoot != null && mainMenuRoot.style.display == DisplayStyle.Flex;
if (!uiManager.IsSettingsOpen && isMainMenuVisible)
{ {
// Adjust the hovered slider's value Debug.Log("[SettingsController] Volume control suppressed: Currently at Main Menu.");
return;
}
// Osu style volume control
_overlayActiveCount++;
ShowVolumeOverlay();
// ... rest of method unchanged
if (_hoveredSubVolume != null)
{
Debug.Log($"[SettingsController] Adjusting Sub Volume: {_hoveredSubVolume}");
UpdateSubVolume(_hoveredSubVolume, -evt.delta.y * 2f);
}
else if (_hoveredSlider != null && _activeTab == "SOUND")
{
// If hovering a slider in the Sound tab, adjust that
float currentVal = _hoveredSlider.value; float currentVal = _hoveredSlider.value;
// Determine step size: default to 1% of range, adjusted for 0-100 range.
float step = (_sliderMax - _sliderMin) / 100f; float step = (_sliderMax - _sliderMin) / 100f;
float newVal = Mathf.Clamp(currentVal - (evt.delta.y * step * 5f), _sliderMin, _sliderMax); // Multiply by a factor to make scroll smoother float newVal = Mathf.Clamp(currentVal - (evt.delta.y * step * 5f), _sliderMin, _sliderMax);
_hoveredSlider.value = newVal; _hoveredSlider.value = newVal;
// Trigger the associated OnValueChanged callback to save PlayerPrefs etc.
_hoveredOnChanged?.Invoke(newVal); _hoveredOnChanged?.Invoke(newVal);
evt.StopPropagation(); // Consume the event so it doesn't affect other elements
} }
else else
{ {
// If not hovering a specific slider, control Master Volume Debug.Log("[SettingsController] Adjusting Master Volume.");
UpdateMasterVolume(-evt.delta.y * 2f); UpdateMasterVolume(-evt.delta.y * 2f);
evt.StopPropagation(); // Consume the event
} }
evt.StopPropagation();
} }
private void UpdateMasterVolume(float delta) private void UpdateMasterVolume(float delta)
{ {
_masterVol = Mathf.Clamp(_masterVol + delta, 0f, 100f); _masterVol = Mathf.Clamp(_masterVol + delta, 0f, 100f);
PlayerPrefs.SetFloat("MasterVolume", _masterVol); PlayerPrefs.SetFloat("MasterVolume", _masterVol);
AudioManager.Instance?.SetVolume("MasterVolume", _masterVol);
_masterVolLabel.text = $"{Mathf.RoundToInt(_masterVol)}%"; _masterVolLabel.text = $"{Mathf.RoundToInt(_masterVol)}%";
ShowVolumeOverlay();
// Refresh Sound Tab UI if visible
if (_activeTab == "SOUND") SwitchTab("SOUND");
}
private void UpdateSubVolume(string key, float delta)
{
float current = PlayerPrefs.GetFloat(key, 80f);
float newVal = Mathf.Clamp(current + delta, 0f, 100f);
PlayerPrefs.SetFloat(key, newVal);
AudioManager.Instance?.SetVolume(key, newVal);
if (_subRings.TryGetValue(key, out var data))
data.label.text = $"{Mathf.RoundToInt(newVal)}%";
if (_activeTab == "SOUND") SwitchTab("SOUND");
} }
private async void ShowVolumeOverlay() private async void ShowVolumeOverlay()
{ {
_volumeOverlay.style.display = DisplayStyle.Flex; Debug.Log("[SettingsController] Showing Volume Overlay.");
_volumeOverlay.style.opacity = 1f; // Ensure overlay is on top of other UI screens
await Task.Delay(1500); _volumeContainer.BringToFront();
if (_volumeOverlay.style.opacity == 1f)
// CRITICAL: Ensure Virtual Cursor is ALWAYS on top of the volume rings
uiManager.Root.Q<VisualElement>("CursorLayer")?.BringToFront();
_volumeContainer.style.display = DisplayStyle.Flex;
_volumeContainer.style.opacity = 1f;
// Refresh all sub labels
foreach (var kvp in _subRings)
{ {
Tween.Custom(1f, 0f, duration: 0.5f, onValueChange: val => _volumeOverlay.style.opacity = val) float val = PlayerPrefs.GetFloat(kvp.Key, 80f);
.OnComplete(() => _volumeOverlay.style.display = DisplayStyle.None); kvp.Value.label.text = $"{Mathf.RoundToInt(val)}%";
}
_masterVolLabel.text = $"{Mathf.RoundToInt(_masterVol)}%";
int currentId = _overlayActiveCount;
await Task.Delay(3000); // Wait 3s as requested
// Only fade out if no new scroll activity happened
if (currentId == _overlayActiveCount && _hoveredSubVolume == null)
{
Debug.Log("[SettingsController] Fading out Volume Overlay.");
Tween.Custom(1f, 0f, duration: 0.5f, onValueChange: val => _volumeContainer.style.opacity = val)
.OnComplete(() => {
if (_volumeContainer.style.opacity == 0f)
_volumeContainer.style.display = DisplayStyle.None;
});
} }
} }
@@ -292,13 +399,17 @@ namespace Hallucinate.UI
private VisualElement CreateAudioSlider(string label, string prefKey) private VisualElement CreateAudioSlider(string label, string prefKey)
{ {
var sliderRow = CreateSliderWithInput(label, 0, 100, PlayerPrefs.GetFloat(prefKey, 80), val => PlayerPrefs.SetFloat(prefKey, val)); var sliderRow = CreateSliderWithInput(label, 0, 100, PlayerPrefs.GetFloat(prefKey, 80), val => {
PlayerPrefs.SetFloat(prefKey, val);
AudioManager.Instance?.SetVolume(prefKey, val);
});
// Register wheel specifically on this row // Register wheel specifically on this row
sliderRow.RegisterCallback<WheelEvent>(evt => { sliderRow.RegisterCallback<WheelEvent>(evt => {
float current = PlayerPrefs.GetFloat(prefKey, 80f); float current = PlayerPrefs.GetFloat(prefKey, 80f);
float newVal = Mathf.Clamp(current - (evt.delta.y * 2f), 0f, 100f); float newVal = Mathf.Clamp(current - (evt.delta.y * 2f), 0f, 100f);
PlayerPrefs.SetFloat(prefKey, newVal); PlayerPrefs.SetFloat(prefKey, newVal);
AudioManager.Instance?.SetVolume(prefKey, newVal);
// Visual update only (to avoid heavy re-render of whole list) // Visual update only (to avoid heavy re-render of whole list)
var slider = sliderRow.Q<Slider>(); var slider = sliderRow.Q<Slider>();

View File

@@ -19,6 +19,7 @@ namespace Hallucinate.UI
private UIDocument _uiDocument; private UIDocument _uiDocument;
private VisualElement _rootElement; private VisualElement _rootElement;
public VisualElement Root => _rootElement;
private VisualElement _cursorLayer; private VisualElement _cursorLayer;
private VisualElement _mainCursor; private VisualElement _mainCursor;
@@ -60,6 +61,7 @@ namespace Hallucinate.UI
private Vector2 _lastMousePos; private Vector2 _lastMousePos;
private float _trailOpacity = 1f; private float _trailOpacity = 1f;
private bool _isSettingsOpen = false; private bool _isSettingsOpen = false;
public bool IsSettingsOpen => _isSettingsOpen;
private const string UI_SCALE_KEY = "UIScale"; private const string UI_SCALE_KEY = "UIScale";

View File

@@ -17,47 +17,47 @@ MonoBehaviour:
Clip: {fileID: 8300000, guid: 811444c0714824740a05502fe969c790, type: 3} Clip: {fileID: 8300000, guid: 811444c0714824740a05502fe969c790, type: 3}
DefaultVolume: 0.35 DefaultVolume: 0.35
DefaultPitch: 1 DefaultPitch: 1
MixerGroup: {fileID: 24300002, guid: 914a8292e2b2b594e9b7cb3ee0c7e77d, type: 2} MixerGroup: {fileID: -6431947565845596828, guid: 914a8292e2b2b594e9b7cb3ee0c7e77d, type: 2}
- Name: key-press-2 - Name: key-press-2
Clip: {fileID: 8300000, guid: 71cfbe0c1eb8128408a6586d5714b279, type: 3} Clip: {fileID: 8300000, guid: 71cfbe0c1eb8128408a6586d5714b279, type: 3}
DefaultVolume: 0.35 DefaultVolume: 0.35
DefaultPitch: 1.05 DefaultPitch: 1.05
MixerGroup: {fileID: 24300002, guid: 914a8292e2b2b594e9b7cb3ee0c7e77d, type: 2} MixerGroup: {fileID: -6431947565845596828, guid: 914a8292e2b2b594e9b7cb3ee0c7e77d, type: 2}
- Name: key-press-3 - Name: key-press-3
Clip: {fileID: 8300000, guid: 21d31f1a9750c3442b2090dd5941e876, type: 3} Clip: {fileID: 8300000, guid: 21d31f1a9750c3442b2090dd5941e876, type: 3}
DefaultVolume: 0.35 DefaultVolume: 0.35
DefaultPitch: 0.95 DefaultPitch: 0.95
MixerGroup: {fileID: 24300002, guid: 914a8292e2b2b594e9b7cb3ee0c7e77d, type: 2} MixerGroup: {fileID: -6431947565845596828, guid: 914a8292e2b2b594e9b7cb3ee0c7e77d, type: 2}
- Name: key-press-4 - Name: key-press-4
Clip: {fileID: 8300000, guid: e3f0dca1e709dae4c97d49ca85b9a3b7, type: 3} Clip: {fileID: 8300000, guid: e3f0dca1e709dae4c97d49ca85b9a3b7, type: 3}
DefaultVolume: 0.35 DefaultVolume: 0.35
DefaultPitch: 1.1 DefaultPitch: 1.1
MixerGroup: {fileID: 24300002, guid: 914a8292e2b2b594e9b7cb3ee0c7e77d, type: 2} MixerGroup: {fileID: -6431947565845596828, guid: 914a8292e2b2b594e9b7cb3ee0c7e77d, type: 2}
- Name: key-confirm - Name: key-confirm
Clip: {fileID: 8300000, guid: 045d19ad3f303e749990e6b0d2667dbb, type: 3} Clip: {fileID: 8300000, guid: 045d19ad3f303e749990e6b0d2667dbb, type: 3}
DefaultVolume: 0.6 DefaultVolume: 0.6
DefaultPitch: 1 DefaultPitch: 1
MixerGroup: {fileID: 24300002, guid: 914a8292e2b2b594e9b7cb3ee0c7e77d, type: 2} MixerGroup: {fileID: -6431947565845596828, guid: 914a8292e2b2b594e9b7cb3ee0c7e77d, type: 2}
- Name: key-delete - Name: key-delete
Clip: {fileID: 8300000, guid: 5ab37717dcad90346972273e7cb52ba0, type: 3} Clip: {fileID: 8300000, guid: 5ab37717dcad90346972273e7cb52ba0, type: 3}
DefaultVolume: 0.4 DefaultVolume: 0.4
DefaultPitch: 0.9 DefaultPitch: 0.9
MixerGroup: {fileID: 24300002, guid: 914a8292e2b2b594e9b7cb3ee0c7e77d, type: 2} MixerGroup: {fileID: -6431947565845596828, guid: 914a8292e2b2b594e9b7cb3ee0c7e77d, type: 2}
- Name: key-caps - Name: key-caps
Clip: {fileID: 8300000, guid: 5724c9b6ea245fd4795737122cf22879, type: 3} Clip: {fileID: 8300000, guid: 5724c9b6ea245fd4795737122cf22879, type: 3}
DefaultVolume: 0.5 DefaultVolume: 0.5
DefaultPitch: 1.2 DefaultPitch: 1.2
MixerGroup: {fileID: 24300002, guid: 914a8292e2b2b594e9b7cb3ee0c7e77d, type: 2} MixerGroup: {fileID: -6431947565845596828, guid: 914a8292e2b2b594e9b7cb3ee0c7e77d, type: 2}
- Name: key-movement - Name: key-movement
Clip: {fileID: 8300000, guid: ff184cc35711e2d4cbeb4b2e39fb6e6a, type: 3} Clip: {fileID: 8300000, guid: ff184cc35711e2d4cbeb4b2e39fb6e6a, type: 3}
DefaultVolume: 0.3 DefaultVolume: 0.3
DefaultPitch: 1.1 DefaultPitch: 1.1
MixerGroup: {fileID: 24300002, guid: 914a8292e2b2b594e9b7cb3ee0c7e77d, type: 2} MixerGroup: {fileID: -6431947565845596828, guid: 914a8292e2b2b594e9b7cb3ee0c7e77d, type: 2}
- Name: menuclick - Name: menuclick
Clip: {fileID: 8300000, guid: 0e77a34a88618c947a6f28d62211e533, type: 3} Clip: {fileID: 8300000, guid: 0e77a34a88618c947a6f28d62211e533, type: 3}
DefaultVolume: 0.5 DefaultVolume: 0.5
DefaultPitch: 1 DefaultPitch: 1
MixerGroup: {fileID: 24300002, guid: 914a8292e2b2b594e9b7cb3ee0c7e77d, type: 2} MixerGroup: {fileID: -6431947565845596828, guid: 914a8292e2b2b594e9b7cb3ee0c7e77d, type: 2}
- Name: menu-play-hover - Name: menu-play-hover
Clip: {fileID: 8300000, guid: c209fbd95b1b02a4cb75a027ce0713aa, type: 3} Clip: {fileID: 8300000, guid: c209fbd95b1b02a4cb75a027ce0713aa, type: 3}
DefaultVolume: 0.4 DefaultVolume: 0.4
@@ -67,84 +67,84 @@ MonoBehaviour:
Clip: {fileID: 8300000, guid: 3408227a2bcd6d8468df7a6bdb185972, type: 3} Clip: {fileID: 8300000, guid: 3408227a2bcd6d8468df7a6bdb185972, type: 3}
DefaultVolume: 0.4 DefaultVolume: 0.4
DefaultPitch: 1.05 DefaultPitch: 1.05
MixerGroup: {fileID: 24300002, guid: 914a8292e2b2b594e9b7cb3ee0c7e77d, type: 2} MixerGroup: {fileID: -6431947565845596828, guid: 914a8292e2b2b594e9b7cb3ee0c7e77d, type: 2}
- Name: menu-options-hover - Name: menu-options-hover
Clip: {fileID: 8300000, guid: 7e58115b9cec4cf45a79c858b76077b1, type: 3} Clip: {fileID: 8300000, guid: 7e58115b9cec4cf45a79c858b76077b1, type: 3}
DefaultVolume: 0.4 DefaultVolume: 0.4
DefaultPitch: 1.05 DefaultPitch: 1.05
MixerGroup: {fileID: 24300002, guid: 914a8292e2b2b594e9b7cb3ee0c7e77d, type: 2} MixerGroup: {fileID: -6431947565845596828, guid: 914a8292e2b2b594e9b7cb3ee0c7e77d, type: 2}
- Name: menu-exit-hover - Name: menu-exit-hover
Clip: {fileID: 8300000, guid: 3fed8036f4c5ad943b1d907d5e29d22c, type: 3} Clip: {fileID: 8300000, guid: 3fed8036f4c5ad943b1d907d5e29d22c, type: 3}
DefaultVolume: 0.4 DefaultVolume: 0.4
DefaultPitch: 0.95 DefaultPitch: 0.95
MixerGroup: {fileID: 24300002, guid: 914a8292e2b2b594e9b7cb3ee0c7e77d, type: 2} MixerGroup: {fileID: -6431947565845596828, guid: 914a8292e2b2b594e9b7cb3ee0c7e77d, type: 2}
- Name: menu-play-click - Name: menu-play-click
Clip: {fileID: 8300000, guid: ebd4de3e32d29714eb4cfd6338ec1d1a, type: 3} Clip: {fileID: 8300000, guid: ebd4de3e32d29714eb4cfd6338ec1d1a, type: 3}
DefaultVolume: 0.8 DefaultVolume: 0.8
DefaultPitch: 1 DefaultPitch: 1
MixerGroup: {fileID: 24300002, guid: 914a8292e2b2b594e9b7cb3ee0c7e77d, type: 2} MixerGroup: {fileID: -6431947565845596828, guid: 914a8292e2b2b594e9b7cb3ee0c7e77d, type: 2}
- Name: menu-back-click - Name: menu-back-click
Clip: {fileID: 8300000, guid: 5ba84b0e2cf43df408d587976da49d63, type: 3} Clip: {fileID: 8300000, guid: 5ba84b0e2cf43df408d587976da49d63, type: 3}
DefaultVolume: 0.7 DefaultVolume: 0.7
DefaultPitch: 0.9 DefaultPitch: 0.9
MixerGroup: {fileID: 24300002, guid: 914a8292e2b2b594e9b7cb3ee0c7e77d, type: 2} MixerGroup: {fileID: -6431947565845596828, guid: 914a8292e2b2b594e9b7cb3ee0c7e77d, type: 2}
- Name: click-short-confirm - Name: click-short-confirm
Clip: {fileID: 8300000, guid: 55eef2d804c271946a2c47337fa27ce4, type: 3} Clip: {fileID: 8300000, guid: 55eef2d804c271946a2c47337fa27ce4, type: 3}
DefaultVolume: 0.9 DefaultVolume: 0.9
DefaultPitch: 1 DefaultPitch: 1
MixerGroup: {fileID: 24300002, guid: 914a8292e2b2b594e9b7cb3ee0c7e77d, type: 2} MixerGroup: {fileID: -6431947565845596828, guid: 914a8292e2b2b594e9b7cb3ee0c7e77d, type: 2}
- Name: click-close - Name: click-close
Clip: {fileID: 8300000, guid: 4ca23ada6817c7348a52ecbd49801702, type: 3} Clip: {fileID: 8300000, guid: 4ca23ada6817c7348a52ecbd49801702, type: 3}
DefaultVolume: 0.6 DefaultVolume: 0.6
DefaultPitch: 0.8 DefaultPitch: 0.8
MixerGroup: {fileID: 24300002, guid: 914a8292e2b2b594e9b7cb3ee0c7e77d, type: 2} MixerGroup: {fileID: -6431947565845596828, guid: 914a8292e2b2b594e9b7cb3ee0c7e77d, type: 2}
- Name: pause-retry-click - Name: pause-retry-click
Clip: {fileID: 8300000, guid: a4ab3d4f1ae6ac940a5d16119a73a4e4, type: 3} Clip: {fileID: 8300000, guid: a4ab3d4f1ae6ac940a5d16119a73a4e4, type: 3}
DefaultVolume: 0.8 DefaultVolume: 0.8
DefaultPitch: 1.1 DefaultPitch: 1.1
MixerGroup: {fileID: 24300002, guid: 914a8292e2b2b594e9b7cb3ee0c7e77d, type: 2} MixerGroup: {fileID: -6431947565845596828, guid: 914a8292e2b2b594e9b7cb3ee0c7e77d, type: 2}
- Name: menu-options-click - Name: menu-options-click
Clip: {fileID: 8300000, guid: 5f51b36760658354a91d710ecab055a1, type: 3} Clip: {fileID: 8300000, guid: 5f51b36760658354a91d710ecab055a1, type: 3}
DefaultVolume: 0.7 DefaultVolume: 0.7
DefaultPitch: 1 DefaultPitch: 1
MixerGroup: {fileID: 24300002, guid: 914a8292e2b2b594e9b7cb3ee0c7e77d, type: 2} MixerGroup: {fileID: -6431947565845596828, guid: 914a8292e2b2b594e9b7cb3ee0c7e77d, type: 2}
- Name: menu-exit-click - Name: menu-exit-click
Clip: {fileID: 8300000, guid: 872d2756e2154fd44a1b07b67596b94a, type: 3} Clip: {fileID: 8300000, guid: 872d2756e2154fd44a1b07b67596b94a, type: 3}
DefaultVolume: 0.7 DefaultVolume: 0.7
DefaultPitch: 0.85 DefaultPitch: 0.85
MixerGroup: {fileID: 24300002, guid: 914a8292e2b2b594e9b7cb3ee0c7e77d, type: 2} MixerGroup: {fileID: -6431947565845596828, guid: 914a8292e2b2b594e9b7cb3ee0c7e77d, type: 2}
- Name: check-on - Name: check-on
Clip: {fileID: 8300000, guid: 0467ea34c3274e449b7dd5b6c820db4e, type: 3} Clip: {fileID: 8300000, guid: 0467ea34c3274e449b7dd5b6c820db4e, type: 3}
DefaultVolume: 0.6 DefaultVolume: 0.6
DefaultPitch: 1.2 DefaultPitch: 1.2
MixerGroup: {fileID: 24300002, guid: 914a8292e2b2b594e9b7cb3ee0c7e77d, type: 2} MixerGroup: {fileID: -6431947565845596828, guid: 914a8292e2b2b594e9b7cb3ee0c7e77d, type: 2}
- Name: check-off - Name: check-off
Clip: {fileID: 8300000, guid: 843d92b9180c16f4fb3a878aa7aacc9b, type: 3} Clip: {fileID: 8300000, guid: 843d92b9180c16f4fb3a878aa7aacc9b, type: 3}
DefaultVolume: 0.6 DefaultVolume: 0.6
DefaultPitch: 0.8 DefaultPitch: 0.8
MixerGroup: {fileID: 24300002, guid: 914a8292e2b2b594e9b7cb3ee0c7e77d, type: 2} MixerGroup: {fileID: -6431947565845596828, guid: 914a8292e2b2b594e9b7cb3ee0c7e77d, type: 2}
- Name: UI_Focus - Name: UI_Focus
Clip: {fileID: 8300000, guid: 843d92b9180c16f4fb3a878aa7aacc9b, type: 3} Clip: {fileID: 8300000, guid: 843d92b9180c16f4fb3a878aa7aacc9b, type: 3}
DefaultVolume: 0.4 DefaultVolume: 0.4
DefaultPitch: 1 DefaultPitch: 1
MixerGroup: {fileID: 24300002, guid: 914a8292e2b2b594e9b7cb3ee0c7e77d, type: 2} MixerGroup: {fileID: -6431947565845596828, guid: 914a8292e2b2b594e9b7cb3ee0c7e77d, type: 2}
- Name: heartbeat - Name: heartbeat
Clip: {fileID: 8300000, guid: 843d92b9180c16f4fb3a878aa7aacc9b, type: 3} Clip: {fileID: 8300000, guid: 843d92b9180c16f4fb3a878aa7aacc9b, type: 3}
DefaultVolume: 0.8 DefaultVolume: 0.8
DefaultPitch: 1 DefaultPitch: 1
MixerGroup: {fileID: 24300002, guid: 914a8292e2b2b594e9b7cb3ee0c7e77d, type: 2} MixerGroup: {fileID: -6431947565845596828, guid: 914a8292e2b2b594e9b7cb3ee0c7e77d, type: 2}
- Name: menuHit - Name: menuHit
Clip: {fileID: 8300000, guid: 843d92b9180c16f4fb3a878aa7aacc9b, type: 3} Clip: {fileID: 8300000, guid: 843d92b9180c16f4fb3a878aa7aacc9b, type: 3}
DefaultVolume: 1 DefaultVolume: 1
DefaultPitch: 1 DefaultPitch: 1
MixerGroup: {fileID: 24300002, guid: 914a8292e2b2b594e9b7cb3ee0c7e77d, type: 2} MixerGroup: {fileID: -6431947565845596828, guid: 914a8292e2b2b594e9b7cb3ee0c7e77d, type: 2}
- Name: sectionpass - Name: sectionpass
Clip: {fileID: 8300000, guid: 843d92b9180c16f4fb3a878aa7aacc9b, type: 3} Clip: {fileID: 8300000, guid: 843d92b9180c16f4fb3a878aa7aacc9b, type: 3}
DefaultVolume: 0.9 DefaultVolume: 0.9
DefaultPitch: 1 DefaultPitch: 1
MixerGroup: {fileID: 24300002, guid: 914a8292e2b2b594e9b7cb3ee0c7e77d, type: 2} MixerGroup: {fileID: -6431947565845596828, guid: 914a8292e2b2b594e9b7cb3ee0c7e77d, type: 2}
- Name: sectionfail - Name: sectionfail
Clip: {fileID: 8300000, guid: 843d92b9180c16f4fb3a878aa7aacc9b, type: 3} Clip: {fileID: 8300000, guid: 843d92b9180c16f4fb3a878aa7aacc9b, type: 3}
DefaultVolume: 0.9 DefaultVolume: 0.9
DefaultPitch: 1 DefaultPitch: 1
MixerGroup: {fileID: 24300002, guid: 914a8292e2b2b594e9b7cb3ee0c7e77d, type: 2} MixerGroup: {fileID: -6431947565845596828, guid: 914a8292e2b2b594e9b7cb3ee0c7e77d, type: 2}

View File

@@ -21,7 +21,7 @@ MonoBehaviour:
m_ScaleMode: 1 m_ScaleMode: 1
m_ReferenceSpritePixelsPerUnit: 100 m_ReferenceSpritePixelsPerUnit: 100
m_PixelsPerUnit: 100 m_PixelsPerUnit: 100
m_Scale: 1 m_Scale: 0.65
m_ReferenceDpi: 96 m_ReferenceDpi: 96
m_FallbackDpi: 96 m_FallbackDpi: 96
m_ReferenceResolution: {x: 1200, y: 800} m_ReferenceResolution: {x: 1200, y: 800}