我试图在我的 Xamarin 应用程序中使用 UrhoSharp 来播放声音,但 SoundSource 似乎需要初始化 Urho,而且我无法在没有错误的情况下初始化 Urho。
这是我要运行的代码
public void PlayTestUrho()
{
using (System.IO.Stream wav_stream = System.Reflection.Assembly.GetExecutingAssembly().GetManifestResourceStream(wav_file_name))
using (System.IO.MemoryStream mem_stream = new System.IO.MemoryStream())
{
wav_stream.CopyTo(mem_stream);
Node node = new Node();
SoundSource src = node.CreateComponent<SoundSource>();
BufferedSoundStream soundStream = new BufferedSoundStream();
soundStream.AddData(mem_stream.ToArray());
soundStream.SetFormat(44100, true, true);
src.AutoRemoveMode = AutoRemoveMode.Node;
src.Enabled = true;
src.Panning = panning;
src.Gain = gain;
src.Frequency = frequency;
src.Play(soundStream);
}
}
但是,当我运行它时,我收到以下错误消息
Urho.Application 尚未启动。所有 urho 对象都应该在 app.Run() 之后初始化,因为它们需要一个活动的上下文。
我尝试Urho.Application.CreateInstance(typeof(Urho.SimpleApplication)).Run();
在我的 App.xaml.cs 构造函数中添加该行(我能找到的最接近 Urho.app.Run() 的东西),但是该行给了我这个错误消息
无法初始化 SDL 子系统:应用程序未正确初始化,您是否在包含 main() 函数的文件中包含 SDL_main.h?您可以通过订阅 Urho.Application.UnhandledException 事件并将 Handled 属性设置为 True 来忽略此异常。
我能找到的唯一帮助是SoundSynthesis示例,但似乎所有示例都假设所有样板开销都已得到处理。(我也可能加载了错误的 wav 文件,但在我让 Urho 尝试播放它之后我会担心)