diff --git a/GFramework.Godot.Abstractions/Directory.Build.props b/GFramework.Godot.Abstractions/Directory.Build.props new file mode 100644 index 0000000..1e6c3bf --- /dev/null +++ b/GFramework.Godot.Abstractions/Directory.Build.props @@ -0,0 +1,24 @@ + + + + netstandard2.0 + true + true + + preview + + + + all + runtime; build; native; contentfiles; analyzers + + + all + runtime; build; native; contentfiles; analyzers + + + diff --git a/GFramework.Godot.Abstractions/GFramework.Godot.Abstractions.csproj b/GFramework.Godot.Abstractions/GFramework.Godot.Abstractions.csproj new file mode 100644 index 0000000..bedec62 --- /dev/null +++ b/GFramework.Godot.Abstractions/GFramework.Godot.Abstractions.csproj @@ -0,0 +1,24 @@ + + + + + false + true + T:System.Diagnostics.CodeAnalysis.NotNullWhenAttribute + enable + + + + + + + + + + + + + diff --git a/GFramework.Godot/architecture/IGodotModule.cs b/GFramework.Godot.Abstractions/architecture/IGodotModule.cs similarity index 87% rename from GFramework.Godot/architecture/IGodotModule.cs rename to GFramework.Godot.Abstractions/architecture/IGodotModule.cs index 01a15b8..7fe6e06 100644 --- a/GFramework.Godot/architecture/IGodotModule.cs +++ b/GFramework.Godot.Abstractions/architecture/IGodotModule.cs @@ -1,8 +1,6 @@ using GFramework.Core.Abstractions.architecture; -using GFramework.Core.architecture; -using Godot; -namespace GFramework.Godot.architecture; +namespace GFramework.Godot.Abstractions.architecture; /// /// Godot模块接口,定义了Godot引擎中模块的基本行为和属性 diff --git a/GFramework.Godot/assets/IResourceLoadSystem.cs b/GFramework.Godot.Abstractions/assets/IResourceLoadSystem.cs similarity index 97% rename from GFramework.Godot/assets/IResourceLoadSystem.cs rename to GFramework.Godot.Abstractions/assets/IResourceLoadSystem.cs index 65181bb..3070391 100644 --- a/GFramework.Godot/assets/IResourceLoadSystem.cs +++ b/GFramework.Godot.Abstractions/assets/IResourceLoadSystem.cs @@ -1,8 +1,6 @@ using GFramework.Core.Abstractions.system; -using GFramework.Game.assets; -using Godot; -namespace GFramework.Godot.assets; +namespace GFramework.Godot.Abstractions.assets; /// /// 资源加载系统接口,提供资源和场景的加载、实例化、预加载等功能 diff --git a/GFramework.Godot/system/IAudioManagerSystem.cs b/GFramework.Godot.Abstractions/system/IAudioManagerSystem.cs similarity index 99% rename from GFramework.Godot/system/IAudioManagerSystem.cs rename to GFramework.Godot.Abstractions/system/IAudioManagerSystem.cs index 209297c..0c6427d 100644 --- a/GFramework.Godot/system/IAudioManagerSystem.cs +++ b/GFramework.Godot.Abstractions/system/IAudioManagerSystem.cs @@ -1,7 +1,6 @@ using GFramework.Core.Abstractions.system; -using Godot; -namespace GFramework.Godot.system; +namespace GFramework.Godot.Abstractions.system; /// /// 音频管理器系统接口,用于统一管理背景音乐和音效的播放 diff --git a/GFramework.Godot/GFramework.Godot.csproj b/GFramework.Godot/GFramework.Godot.csproj index 6c052b3..fbeda6a 100644 --- a/GFramework.Godot/GFramework.Godot.csproj +++ b/GFramework.Godot/GFramework.Godot.csproj @@ -15,8 +15,8 @@ + - diff --git a/GFramework.Godot/assets/AbstractResourceFactorySystem.cs b/GFramework.Godot/assets/AbstractResourceFactorySystem.cs index 321155e..451e5b6 100644 --- a/GFramework.Godot/assets/AbstractResourceFactorySystem.cs +++ b/GFramework.Godot/assets/AbstractResourceFactorySystem.cs @@ -1,6 +1,7 @@ using GFramework.Core.Abstractions.architecture; using GFramework.Core.system; using GFramework.Game.assets; +using GFramework.Godot.Abstractions.assets; using Godot; namespace GFramework.Godot.assets; diff --git a/GFramework.Godot/assets/ResourceLoadSystem.cs b/GFramework.Godot/assets/ResourceLoadSystem.cs index 7a90b37..426ce77 100644 --- a/GFramework.Godot/assets/ResourceLoadSystem.cs +++ b/GFramework.Godot/assets/ResourceLoadSystem.cs @@ -1,6 +1,6 @@ using GFramework.Core.system; using GFramework.Game.assets; -using GFramework.Godot.assets; +using GFramework.Godot.Abstractions.assets; using Godot; namespace GFramework.Godot.system; diff --git a/GFramework.Godot/system/AbstractAudioManagerSystem.cs b/GFramework.Godot/system/AbstractAudioManagerSystem.cs index 92b55f9..38fc485 100644 --- a/GFramework.Godot/system/AbstractAudioManagerSystem.cs +++ b/GFramework.Godot/system/AbstractAudioManagerSystem.cs @@ -1,6 +1,7 @@ using GFramework.Core.system; using GFramework.Game.assets; -using GFramework.Godot.assets; +using GFramework.Godot.Abstractions.assets; +using GFramework.Godot.Abstractions.system; using Godot; namespace GFramework.Godot.system; @@ -195,26 +196,6 @@ public abstract class AbstractAudioManagerSystem : AbstractSystem, IAudioManager player.Play(); } - /// - /// 播放3D音效 - /// - /// 音频文件路径 - /// 3D空间中的位置 - /// 音量大小,范围0-1 - public virtual void PlaySound3D(string audioPath, Vector3 position, float volume = 1.0f) - { - if (AvailableSound3DPlayers.Count == 0) return; - - var audioStream = ResourceLoadSystem?.LoadResource(audioPath); - if (audioStream == null) return; - - var player = AvailableSound3DPlayers.Dequeue(); - player.Stream = audioStream; - player.VolumeDb = LinearToDb(volume * SoundVolume * MasterVolume); - player.Position = position; - player.Play(); - } - /// /// 停止背景音乐 /// @@ -425,6 +406,26 @@ public abstract class AbstractAudioManagerSystem : AbstractSystem, IAudioManager // 可以通过AudioEffectReverb实现 } + /// + /// 播放3D音效 + /// + /// 音频文件路径 + /// 3D空间中的位置 + /// 音量大小,范围0-1 + public virtual void PlaySound3D(string audioPath, Vector3 position, float volume = 1.0f) + { + if (AvailableSound3DPlayers.Count == 0) return; + + var audioStream = ResourceLoadSystem?.LoadResource(audioPath); + if (audioStream == null) return; + + var player = AvailableSound3DPlayers.Dequeue(); + player.Stream = audioStream; + player.VolumeDb = LinearToDb(volume * SoundVolume * MasterVolume); + player.Position = position; + player.Play(); + } + /// /// 系统初始化方法 /// diff --git a/GFramework.sln b/GFramework.sln index 25d6dac..cf67b9b 100644 --- a/GFramework.sln +++ b/GFramework.sln @@ -22,6 +22,8 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "GFramework.SourceGenerators EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "GFramework.Core.Abstractions", "GFramework.Core.Abstractions\GFramework.Core.Abstractions.csproj", "{31BA9F62-153A-4943-A8A0-7571FC7D5FEE}" EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "GFramework.Godot.Abstractions", "GFramework.Godot.Abstractions\GFramework.Godot.Abstractions.csproj", "{EFE2EF31-CEAC-4BFD-851B-5E00FEBC945D}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -72,5 +74,9 @@ Global {31BA9F62-153A-4943-A8A0-7571FC7D5FEE}.Debug|Any CPU.Build.0 = Debug|Any CPU {31BA9F62-153A-4943-A8A0-7571FC7D5FEE}.Release|Any CPU.ActiveCfg = Release|Any CPU {31BA9F62-153A-4943-A8A0-7571FC7D5FEE}.Release|Any CPU.Build.0 = Release|Any CPU + {EFE2EF31-CEAC-4BFD-851B-5E00FEBC945D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {EFE2EF31-CEAC-4BFD-851B-5E00FEBC945D}.Debug|Any CPU.Build.0 = Debug|Any CPU + {EFE2EF31-CEAC-4BFD-851B-5E00FEBC945D}.Release|Any CPU.ActiveCfg = Release|Any CPU + {EFE2EF31-CEAC-4BFD-851B-5E00FEBC945D}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection EndGlobal