版本
menu

Wwise SDK 2021.1.14
如何为插件创建 Resource 文件

Resource 文件(以 .rc 作为扩展名)用于描述插件在创建自定义图形界面时所用的资源。 我们可以使用 Visual Studio Editor 工具来便捷地管理 Resource 文件。藉此,可通过将各种小组件拖到模板上来构建 GUI。下面介绍了如何逐步为新的插件创建 Resource 文件。

首先,使用 wp.py 创建新的插件(若对开发工具不熟悉,请参阅 使用开发工具 章节)。

python "%WWISEROOT%/Scripts/Build/Plugins/wp.py" new

对提示作出回应,并在创建插件后将目录改为工程文件夹,然后调用 premake

cd MyNewFX
python "%WWISEROOT%/Scripts/Build/Plugins/wp.py" premake Authoring

在 Visual Studio 2019 中打开生成的解决方案文件 (.sln),确保高亮显示工程文件夹(不要与解决方案文件夹混淆,否则 Add New Item 选项会不同),然后在 Project 菜单中选择 Add New Item...。在对话框窗口中,在左侧列中选择 Resource ,并在中间窗格中选择 Resource File (.rc)。藉此,可在工程的 WwisePlugin 文件夹中创建名为 Resource.rc 的文件。

在 Resource View 中,右键单击 Resource.rc 文件,并选择 Add Resource。在 Add Resource 窗口中,选择 Dialog 并单击 New 按钮。

备注: 在创建 DIALOG 窗口时,确保在其 Properties 中设置以下样式:
  • Appearance/Border = None
  • Appearance/Clip Children = True
  • Appearance/Style = Child
  • Misc/Control = True
  • Misc/Control Parent = True

这样应当就可以利用界面左侧的 Toolbox 选项卡将小组件拖放到模板上来构建插件的图形界面了。在保存工程时,将更新 Resource 文件。

若要将 Resource.rc 文件包含在工程中,只需再次调用 premake 即可。这样的话,在下次构建插件时,便会基于 Resource 文件自动生成名为 resource.h 的文件:

python "%WWISEROOT%/Scripts/Build/Plugins/wp.py" build -c Release -x x64 -t vc160 Authoring

若要告知插件使用自定义界面,则需覆盖 AK::Wwise::Plugin::GUIWindows 所提供的方法。 在 Win32/PluginNamePluginGUI.h 中包含 resource.h,然后添加方法签名并创建 private 变量来存储窗口句柄。

#pragma once
#include "../MyNewFXPlugin.h"
#include "../resource.h"
class MyNewFXPluginGUI final
    : public AK::Wwise::Plugin::PluginMFCWindows<>
    , public AK::Wwise::Plugin::GUIWindows
{
public:
    MyNewFXPluginGUI();
    HINSTANCE GetResourceHandle() const override;
    bool GetDialog(
        AK::Wwise::Plugin::eDialog in_eDialog,
        UINT& out_uiDialogID,
        AK::Wwise::Plugin::PopulateTableItem*& out_pTable
    ) const override;
 
    bool WindowProc(
        AK::Wwise::Plugin::eDialog in_eDialog,
        HWND in_hWnd,
        uint32_t in_message,
        WPARAM in_wParam,
        LPARAM in_lParam,
        LRESULT& out_lResult
    ) override;
private:
    HWND m_hwndPropView = nullptr;
};

Win32/PluginNamePluginGUI.cpp 中,添加对这些方法的实现代码:

HINSTANCE MyNewFXPluginGUI::GetResourceHandle() const
{
    AFX_MANAGE_STATE( AfxGetStaticModuleState() );
    return AfxGetStaticModuleState()->m_hCurrentResourceHandle;
}
bool MyNewFXPluginGUI::GetDialog( AK::Wwise::Plugin::eDialog in_eDialog, UINT & out_uiDialogID, AK::Wwise::Plugin::PopulateTableItem *& out_pTable ) const
{
    AKASSERT( in_eDialog == AK::Wwise::Plugin::SettingsDialog );
    out_uiDialogID = IDD_DIALOG1;
    out_pTable = nullptr;
    return true;
}
bool MyNewFXPluginGUI::WindowProc( AK::Wwise::Plugin::eDialog in_eDialog, HWND in_hWnd, UINT in_message, WPARAM in_wParam, LPARAM in_lParam, LRESULT & out_lResult )
{
    switch ( in_message )
    {
    case WM_INITDIALOG:
        m_hwndPropView = in_hWnd;
        break;
    case WM_DESTROY:
        m_hwndPropView = NULL;
        break;
    }
    out_lResult = 0;
    return false;
}

重新编译插件并将其加载到 Wwise 工程中。这样应当就可以看到自定义图形界面了。


此页面对您是否有帮助?

需要技术支持?

仍有疑问?或者问题?需要更多信息?欢迎联系我们,我们可以提供帮助!

查看我们的“技术支持”页面

介绍一下自己的项目。我们会竭力为您提供帮助。

来注册自己的项目,我们帮您快速入门,不带任何附加条件!

开始 Wwise 之旅