10 Commits

Author SHA1 Message Date
Timur Nizamov 5a13928a59 FMOD instance errors fix 2026-01-30 21:01:11 +02:00
rannosam 52701f3231 Erased debug element 2026-01-21 19:00:38 +02:00
Timur Nizamov aeee055e18 voiceover vca and volume slider added to Unity and FMOD 2026-01-21 15:51:17 +02:00
Timur Nizamov 389707b5f7 added some sound in FMOD 2026-01-16 22:40:02 +02:00
Timur Nizamov 6def60df98 More voicelines added, PlayDialogue function updated 2026-01-16 17:37:42 +02:00
Timur Nizamov 641fe43472 Voiceline adding logic, fmod asset folder cleaning, fmod tweaks 2026-01-15 22:25:02 +02:00
rannosam 91275418e4 fixed backwards doors issue 2026-01-11 18:08:49 +02:00
rannosam 85edf6b43f fixed elevator buttons issue 2026-01-11 17:10:44 +02:00
Timur Nizamov e6db72778b Colliders with Probuilder, FMOD Programmer Instrument API code start 2026-01-11 04:14:27 +02:00
Timur Nizamov 27fc11f8b2 A few reverb additions 2026-01-05 16:01:07 +02:00
428 changed files with 6716 additions and 300 deletions
Binary file not shown.
@@ -1,78 +1,113 @@
fileFormatVersion: 2
guid: 684d4d47a018ed14080e15f4c99b8e86
PluginImporter:
serializedVersion: 1
iconMap: {}
executionOrder: {}
isPreloaded: 0
platformData:
Android:
enabled: 0
settings:
CPU: AnyCPU
Any:
enabled: 0
settings: {}
Editor:
enabled: 1
settings:
CPU: x86_64
DefaultValueInitialized: true
OS: Windows
Linux:
enabled: 1
settings:
CPU: None
Linux64:
enabled: 1
settings:
CPU: x86_64
LinuxUniversal:
enabled: 1
settings:
CPU: AnyCPU
OSXIntel:
enabled: 1
settings:
CPU: None
OSXIntel64:
enabled: 1
settings:
CPU: AnyCPU
OSXUniversal:
enabled: 1
settings:
CPU: AnyCPU
SamsungTV:
enabled: 0
settings:
STV_MODEL: STANDARD_13
WP8:
enabled: 0
settings:
CPU: AnyCPU
DontProcess: False
PlaceholderPath:
Win:
enabled: 0
settings:
CPU: None
Win64:
enabled: 1
settings:
CPU: AnyCPU
WindowsStoreApps:
enabled: 0
settings:
CPU: AnyCPU
DontProcess: False
PlaceholderPath:
SDK: AnySDK
iOS:
enabled: 0
settings:
CompileFlags:
FrameworkDependencies:
userData:
assetBundleName:
assetBundleVariant:
fileFormatVersion: 2
guid: 684d4d47a018ed14080e15f4c99b8e86
PluginImporter:
externalObjects: {}
serializedVersion: 2
iconMap: {}
executionOrder: {}
defineConstraints: []
isPreloaded: 0
isOverridable: 0
isExplicitlyReferenced: 0
validateReferences: 1
platformData:
- first:
: Linux
second:
enabled: 1
settings:
CPU: None
- first:
: LinuxUniversal
second:
enabled: 1
settings:
CPU: AnyCPU
- first:
: OSXIntel
second:
enabled: 1
settings:
CPU: None
- first:
: OSXIntel64
second:
enabled: 1
settings:
CPU: AnyCPU
- first:
: SamsungTV
second:
enabled: 0
settings:
STV_MODEL: STANDARD_13
- first:
: WP8
second:
enabled: 0
settings:
CPU: AnyCPU
DontProcess: False
PlaceholderPath:
- first:
Android: Android
second:
enabled: 0
settings:
CPU: AnyCPU
- first:
Any:
second:
enabled: 0
settings: {}
- first:
Editor: Editor
second:
enabled: 1
settings:
CPU: x86_64
DefaultValueInitialized: true
OS: Windows
- first:
Standalone: Linux64
second:
enabled: 1
settings:
CPU: AnyCPU
- first:
Standalone: OSXUniversal
second:
enabled: 1
settings:
CPU: AnyCPU
- first:
Standalone: Win
second:
enabled: 0
settings:
CPU: None
- first:
Standalone: Win64
second:
enabled: 1
settings:
CPU: AnyCPU
- first:
Windows Store Apps: WindowsStoreApps
second:
enabled: 0
settings:
CPU: AnyCPU
DontProcess: False
PlaceholderPath:
SDK: AnySDK
- first:
iPhone: iOS
second:
enabled: 0
settings:
CompileFlags:
FrameworkDependencies:
userData:
assetBundleName:
assetBundleVariant:
@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 3ca33810cadcc3f438e1c22aef4b84e2
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: fdd84c412b9f8e54190abf5fb9d822e8
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
@@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: b95ea1a21a2515b428e818f2ba0071ab
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
@@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: 6a5c837d928416b468e7886bb15a44ea
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
@@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: d6c33fb52eb7c5d48b88b1ce923918e4
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
@@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: 659e5b6b771c6e84288fab70870e71ca
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
@@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: a802a304ac7a06f4aa7ec3a5343ec6ca
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
@@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: 9d9d2a3944a244a4cb506fe9a06b6eab
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
@@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: 45fe15686901bcf4d806b3fcfa9767af
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
@@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: d0a0941231c25de4599a045b84fbbbe4
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
@@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: 18de2bee3762c3d42aade5e9a1105f2d
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
@@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: 98d6925b0e4041d4cb810364c9e59186
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: f20dfff913b4cf048ba81c8951e1d515
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
@@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: c6a124544b1bffe4b98d7143af781d70
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
@@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: 1064f096f3015c74c943703650d7406b
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
@@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: 254823b7963809f489ac39e4edfc6a46
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
@@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: a122a6d15a6f1aa49893a06e3ecb16fc
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
@@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: 6da26a4752be7ce43a29e0e1bf247e72
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
@@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: e0723bda80a360c4a954fee1242f8e6a
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
@@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: a2ad72c769431494e87176ee57a9dbe5
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
@@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: 477e8c72e4a98d84bb70bfb6e1399699
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
@@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: 35b818bce640964478f8e964b97d2294
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
@@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: a68ec6ce65a198c40a587c6e0f0c8faa
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
@@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: 0aa0fe8bc08f949459ac26cef320400e
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
@@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: 2fc4b956c3bddc841a11bec32d579b3f
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
@@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: 1629c3cacc79199489bb6696a90c6b74
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
@@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: 0322733d2ec0a5e4880d27eba19da8d4
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
@@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: d8c0aa0bcbfc8724a87c386340b0c227
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
@@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: 92658b78307678e4790910a8d7799650
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 0c63edcea3f1eb64aa4eaa0f9b65d4ec
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
@@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: 3dadebd0d94106b44a80fbcb1965d6de
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
@@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: 9270b2bbe46c8fe4fb76644cf9e0c2a2
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
@@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: b2c8a4e7715582b42a4b6eebff90743b
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
@@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: ee35784d923986c4c832e3a1c02f7ea9
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
@@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: 53dac4a8b4a6e5845b4ca1c859e81866
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
@@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: 620343e30e35adf4aaf3fe1296540e0f
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
@@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: bf6d885db63d3a542b3dd07acc16fc3b
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
@@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: fb8a9fcfd50369448a9535727e91be9a
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
@@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: 497e3485a60147a41a9a6df9ff32b6b6
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
@@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: 8d725d2a72e75474da7b2012a77b2039
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
@@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: 3301bed657a92434fb8f62ac4bd61406
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
@@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: d46684e8664c4ba4ba512f67e1c54310
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
@@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: 1ffe3d974ca4c4d45ae71410bd60ea1f
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
@@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: 634c2a7aac3130544aeae124c4c49bb0
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
@@ -2551,7 +2551,7 @@ MonoBehaviour:
m_Script: {fileID: 11500000, guid: ebe1ab889a9bed940995d4f47bc743ef, type: 3}
m_Name:
m_EditorClassIdentifier:
target: 2
target: 5
--- !u!1 &3847096334227967442
GameObject:
m_ObjectHideFlags: 0
@@ -3539,8 +3539,8 @@ 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: -2000.1, y: 34.7}
m_SizeDelta: {x: 117.7, y: 49.6}
m_AnchoredPosition: {x: -2404.8, y: 34.7}
m_SizeDelta: {x: 220, y: 49.6}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &2306375091028476275
CanvasRenderer:
@@ -3570,7 +3570,7 @@ MonoBehaviour:
m_OnCullStateChanged:
m_PersistentCalls:
m_Calls: []
m_text: 'Music:'
m_text: 'Voiceovers:'
m_isRightToLeft: 0
m_fontAsset: {fileID: 11400000, guid: d564a6b9a8a781b438125b614edcc297, type: 2}
m_sharedMaterial: {fileID: 2467261418627247352, guid: d564a6b9a8a781b438125b614edcc297,
@@ -4890,7 +4890,7 @@ GameObject:
- component: {fileID: 9123126080211807181}
- component: {fileID: 2844805864736818914}
m_Layer: 5
m_Name: Music Slider
m_Name: Voiceover Slider
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
@@ -8,7 +8,8 @@ public class SliderToVCA : MonoBehaviour
Ambiences,
Music,
SFX,
UI
UI,
Voiceovers
}
public VCATarget target;
@@ -40,6 +41,8 @@ private float GetInitialValueFromAudioManager()
return AudioManager.Instance.SFXVolume;
case VCATarget.UI:
return AudioManager.Instance.UIVolume;
case VCATarget.Voiceovers:
return AudioManager.Instance.VoiceoverVolume;
default:
return 0.5f;
}
@@ -76,6 +79,10 @@ private float GetInitialValueFromAudioManager()
case VCATarget.UI:
AudioManager.Instance.SetUIVCA(value);
break;
case VCATarget.Voiceovers:
AudioManager.Instance.SetVoiceoverVCA(value);
break;
}
}
}
@@ -184,8 +184,6 @@ public class TutorialAudioListener : MonoBehaviour
}
}
private void HandleGrab(XRGrabInteractable grab)
{
if (grab == null)
@@ -131,4 +131,4 @@ MonoBehaviour:
PlayerOcclusionWidening: 1
OcclusionLayer:
serializedVersion: 2
m_Bits: 0
m_Bits: 268438528
Binary file not shown.
+132 -9
View File
@@ -20,6 +20,7 @@ public class AudioManager : MonoBehaviour
private VCA sfxVCA;
private VCA uiVCA;
private VCA ambienceVCA;
private VCA voiceoverVCA;
[SerializeField]
[Header("Volume")]
@@ -40,6 +41,9 @@ public class AudioManager : MonoBehaviour
public float UIVolume = 0.5f;
[Range(0, 1)]
public float VoiceoverVolume = 0.5f;
[Range(0, 1)]
private Bus masterBus;
private Bus ambientBus;
private Bus musicBus;
@@ -63,6 +67,7 @@ public class AudioManager : MonoBehaviour
// public static AudioManager instance;
private static EventInstance musicEventInstance;
private EVENT_CALLBACK dialogueCallback;
// public access for the Singleton
// and lazy instantiation if not exists
@@ -108,18 +113,22 @@ public class AudioManager : MonoBehaviour
_instance.sfxBus = RuntimeManager.GetBus("bus:/SFX");
_instance.uiBus = RuntimeManager.GetBus("bus:/UI");
_instance.masterVCA = RuntimeManager.GetVCA("vca:/Master");
_instance.musicVCA = RuntimeManager.GetVCA("vca:/Music");
_instance.ambienceVCA = RuntimeManager.GetVCA("vca:/Ambiences");
_instance.sfxVCA = RuntimeManager.GetVCA("vca:/SFX");
_instance.uiVCA = RuntimeManager.GetVCA("vca:/UI");
_instance.voiceoverVCA = RuntimeManager.GetVCA("vca:/Voiceovers");
_instance.masterVCA.setVolume(_instance.MasterVolume);
_instance.musicVCA.setVolume(_instance.MusicVolume);
_instance.ambienceVCA.setVolume(_instance.AmbienceVolume);
_instance.sfxVCA.setVolume(_instance.SFXVolume);
_instance.uiVCA.setVolume(_instance.UIVolume);
_instance.voiceoverVCA.setVolume(_instance.VoiceoverVolume);
_instance.dialogueCallback = new EVENT_CALLBACK(DialogueEventCallback);
}
@@ -152,6 +161,11 @@ public class AudioManager : MonoBehaviour
UIVolume = value;
uiVCA.setVolume(UIVolume);
}
public void SetVoiceoverVCA(float value)
{
VoiceoverVolume = value;
voiceoverVCA.setVolume(VoiceoverVolume);
}
private void Awake()
@@ -207,7 +221,7 @@ public class AudioManager : MonoBehaviour
EventInstance instance = RuntimeManager.CreateInstance(sound);
RuntimeManager.AttachInstanceToGameObject(instance, go);
instance.start();
// instance.release();
instance.release();
eventInstances.Add(instance);
return instance;
@@ -277,9 +291,121 @@ public class AudioManager : MonoBehaviour
}
public static void Pause()
{
musicEventInstance.setPaused(true);
}
//=====//
//=====//
public void PlayDialogue(string audioTableKey, GameObject emitter = null, float radioAmount = 0f)
{
var dialogueEvent = FMODEvents.Instance.VoiceoverAll;
if (dialogueEvent.IsNull)
{
Debug.LogWarning("Dialogue EventReference is not assigned!");
return;
}
EventInstance instance = RuntimeManager.CreateInstance(dialogueEvent);
if (emitter != null)
{
RuntimeManager.AttachInstanceToGameObject(instance, emitter);
instance.set3DAttributes(FMODUnity.RuntimeUtils.To3DAttributes(emitter.gameObject));
}
// Assign the FMOD parameter value (in this case: Continous type)
instance.setParameterByName("Radio", radioAmount);
// Pin the key for programmer sound callback
GCHandle stringHandle = GCHandle.Alloc(audioTableKey);
instance.setUserData(GCHandle.ToIntPtr(stringHandle));
// Set the callback for programmer sounds
instance.setCallback(dialogueCallback);
bool managedByOcclusion = false;
// Add occlusion if available on the emitter
if (emitter != null)
{
FirstPersonOcclusion occlusion = emitter.GetComponent<FirstPersonOcclusion>();
if (occlusion != null)
{
occlusion.InitialiseWithInstance(instance);
managedByOcclusion = true;
}
}
instance.start();
if (!managedByOcclusion)
{
instance.release();
}
}
[AOT.MonoPInvokeCallback(typeof(EVENT_CALLBACK))]
private static FMOD.RESULT DialogueEventCallback(
EVENT_CALLBACK_TYPE type,
IntPtr instancePtr,
IntPtr parameterPtr)
{
EventInstance instance = new EventInstance(instancePtr);
instance.getUserData(out IntPtr stringPtr);
GCHandle stringHandle = GCHandle.FromIntPtr(stringPtr);
string key = stringHandle.Target as string;
switch (type)
{
case EVENT_CALLBACK_TYPE.CREATE_PROGRAMMER_SOUND:
{
var parameter = Marshal.PtrToStructure<PROGRAMMER_SOUND_PROPERTIES>(parameterPtr);
FMOD.Studio.SOUND_INFO soundInfo;
var result = RuntimeManager.StudioSystem.getSoundInfo(key, out soundInfo);
if (result != FMOD.RESULT.OK)
break;
FMOD.Sound sound;
RuntimeManager.CoreSystem.createSound(
soundInfo.name_or_data,
soundInfo.mode | FMOD.MODE.CREATECOMPRESSEDSAMPLE,
ref soundInfo.exinfo,
out sound
);
parameter.sound = sound.handle;
parameter.subsoundIndex = soundInfo.subsoundindex;
Marshal.StructureToPtr(parameter, parameterPtr, false);
break;
}
case EVENT_CALLBACK_TYPE.DESTROY_PROGRAMMER_SOUND:
{
var parameter = Marshal.PtrToStructure<PROGRAMMER_SOUND_PROPERTIES>(parameterPtr);
var sound = new FMOD.Sound(parameter.sound);
sound.release();
break;
}
case EVENT_CALLBACK_TYPE.DESTROYED:
{
// Release pinned string
stringHandle.Free();
break;
}
}
return FMOD.RESULT.OK;
}
public void StopSFX()
{
sfxBus.stopAllEvents(FMOD.Studio.STOP_MODE.IMMEDIATE);
@@ -300,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);
@@ -316,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();
}
}
}
@@ -3,6 +3,9 @@ using UnityEngine;
public class FMODEvents : MonoBehaviour
{
[field: Header("Voiceline FMOD Programmer Event")]
[field: SerializeField] public EventReference VoiceoverAll { get; private set; }
[field: Header("Musical Ambiences")]
[field: SerializeField] public EventReference Kosmos { get; private set; }
@@ -19,6 +22,7 @@ public class FMODEvents : MonoBehaviour
[field: SerializeField] public EventReference BowGrab { get; private set; }
[field: SerializeField] public EventReference Spray { get; private set; }
[field: SerializeField] public EventReference Coughing { get; private set; }
//[field: SerializeField] public EventReference MyNewSoundEffect { get; private set; }
[field: Header("CAR")]
[field: SerializeField] public EventReference DoorOpen { get; private set; }
@@ -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();
}
}
@@ -0,0 +1,13 @@
using UnityEngine;
public class VoiceoverTester : MonoBehaviour
{
//[Tooltip("Audio Table key")]
public string dialogueKey = "Chef/Ulrich_Terribly_Sorry1";
private void OnTriggerEnter(Collider other)
{
AudioManager.Instance.PlayDialogue(dialogueKey, gameObject, 0f);
//Debug.LogError("Voiceline played (in 3D)");
}
}
@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: e77f6976a4505294797905646ff02a8a
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.

Some files were not shown because too many files have changed in this diff Show More