C#Fmod System :: CreateChannelGroup返回ERR_INVALID_PARAM

时间:2017-08-25 00:39:25

标签: c# fmod

我得到了一些未知错误的原因 来自C#中的System :: CreateChannelGroup函数

private void FmodERRCheck(Fmod.RESULT result){
    if (result != RESULT.OK)
    {
        MessageBox.Show(Fmod.Error.String(result));
    }
}

private void InitFmodSystems()
{
    Fmod.Factory.System_Create(out system);
    system = new Fmod.System(IntPtr.Zero);
    system.init(3, INITFLAGS.NORMAL, IntPtr.Zero);

    channelGroup = new ChannelGroup(IntPtr.Zero);

    FmodERRCheck(system.createChannelGroup("", out channelGroup));
}

在类上声明的变量。
我编写了InitFmodSystems()方法来启动fmod系统。

FmodERRCheck(system.createChannelGroup("", out channelGroup));

此行返回“ERR_INVALID_PARAM”错误。
怎么了?

2 个答案:

答案 0 :(得分:0)

问题是将IntPtr.Zero传递给System构造函数。在FMOD中,您可以使用FMOD_System_Create获取System对象的指针,并可以将其传递给其他函数或C#包装器中的构造函数。

工作代码如下:

Fmod.Factory.System_Create(out IntPtr handle);
System system = new Fmod.System(handle); 

在FMOD C#包装器中,您不能将IntPtr.Zero传递给任何“核心”类构造函数,即无效句柄,它期望{{{ 1}}类。

因此,在正确创建System对象(请参见上面的示例)之后,您将像这样创建System

ChannelGroup

答案 1 :(得分:-1)

您正在初始化channelGroup变量。 使用out参数时,不能使用初始化变量。

所以它一定是这样的。

ChannelGroup channelgroup;
FmodERRCheck(system.createChannelGroup("", out channelGroup));

在这个例子中,channelGroup变量保持未分配状态,直到它作为out参数进入函数。

修改

也可能不允许使用name参数的空字符串。但初始化的参数也是一个问题。