From 5a13928a5908efd21559889fc411bcdec11d5094 Mon Sep 17 00:00:00 2001 From: Timur Nizamov Date: Fri, 30 Jan 2026 21:01:11 +0200 Subject: [PATCH] FMOD instance errors fix --- .../_PROJECT/Scenes/DeltaBuilding_base.unity | 4 +-- Assets/_PROJECT/Scripts/Audio/AudioManager.cs | 25 +++++++++++++------ .../Scripts/Audio/FirstPersonOcclusion.cs | 15 ++++++++++- highscores.json | 8 +++--- 4 files changed, 37 insertions(+), 15 deletions(-) diff --git a/Assets/_PROJECT/Scenes/DeltaBuilding_base.unity b/Assets/_PROJECT/Scenes/DeltaBuilding_base.unity index 1aaa64b8..36e22f57 100644 --- a/Assets/_PROJECT/Scenes/DeltaBuilding_base.unity +++ b/Assets/_PROJECT/Scenes/DeltaBuilding_base.unity @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:ae11a27ee31e68fc6b527cd7460a393287f0dc564d2bf1c84b4d7d1311d6ae26 -size 67169070 +oid sha256:4f9dce93434cac656af0e37a5236586d563cc706f6da8b3d164590e9be999e2a +size 67169409 diff --git a/Assets/_PROJECT/Scripts/Audio/AudioManager.cs b/Assets/_PROJECT/Scripts/Audio/AudioManager.cs index 6f343527..9d87d01e 100644 --- a/Assets/_PROJECT/Scripts/Audio/AudioManager.cs +++ b/Assets/_PROJECT/Scripts/Audio/AudioManager.cs @@ -291,6 +291,11 @@ public class AudioManager : MonoBehaviour } + public static void Pause() + { + musicEventInstance.setPaused(true); + } + //=====// //=====// @@ -323,6 +328,8 @@ public class AudioManager : MonoBehaviour // Set the callback for programmer sounds instance.setCallback(dialogueCallback); + bool managedByOcclusion = false; + // Add occlusion if available on the emitter if (emitter != null) { @@ -330,11 +337,16 @@ public class AudioManager : MonoBehaviour if (occlusion != null) { occlusion.InitialiseWithInstance(instance); + managedByOcclusion = true; } } instance.start(); - instance.release(); + + if (!managedByOcclusion) + { + instance.release(); + } } @@ -414,11 +426,6 @@ public class AudioManager : MonoBehaviour instance.setPaused(false); } - public static void Pause() - { - musicEventInstance.setPaused(true); - } - public static void Pause(EventInstance instance) { instance.setPaused(true); @@ -430,8 +437,10 @@ public class AudioManager : MonoBehaviour { foreach (EventInstance eventInstance in eventInstances) { - eventInstance.stop(FMOD.Studio.STOP_MODE.IMMEDIATE); - eventInstance.release(); + if (eventInstance.isValid()) { + eventInstance.stop(FMOD.Studio.STOP_MODE.IMMEDIATE); + eventInstance.release(); + } } } diff --git a/Assets/_PROJECT/Scripts/Audio/FirstPersonOcclusion.cs b/Assets/_PROJECT/Scripts/Audio/FirstPersonOcclusion.cs index 91ca2839..8c7a09d4 100644 --- a/Assets/_PROJECT/Scripts/Audio/FirstPersonOcclusion.cs +++ b/Assets/_PROJECT/Scripts/Audio/FirstPersonOcclusion.cs @@ -75,7 +75,7 @@ public class FirstPersonOcclusion : MonoBehaviour AudioOccluded.start(); // 4. Releasing Instance (This allows the event to self-manage its lifetime, which is fine) - AudioOccluded.release(); + //AudioOccluded.release(); managedInstances.Add(AudioOccluded); // ADDED @@ -205,4 +205,17 @@ public class FirstPersonOcclusion : MonoBehaviour } } } + private void OnDestroy() + { + // Stop & release all instances when this object is destroyed + foreach (var inst in managedInstances) + { + if (inst.isValid()) + { + inst.stop(FMOD.Studio.STOP_MODE.IMMEDIATE); + inst.release(); + } + } + managedInstances.Clear(); + } } diff --git a/highscores.json b/highscores.json index 71d6d90b..40e4bfff 100644 --- a/highscores.json +++ b/highscores.json @@ -8,6 +8,10 @@ "name": "timur", "score": 486.0 }, + { + "name": "taavi", + "score": 480.0 + }, { "name": "ppppVBBPPP", "score": 478.0 @@ -55,10 +59,6 @@ { "name": "yty", "score": 446.0 - }, - { - "name": "lp", - "score": 444.0 } ] } \ No newline at end of file