menu
 
版本
2021.1.14.8108

2024.1.5.8803

2023.1.13.8732

2022.1.19.8584

2021.1.14.8108

2019.2.15.7667

2019.1.11.7296

2018.1.11.6987

2017.2.10.6745

2017.1.9.6501

2016.2.6.6153

2015.1.9.5624

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 按钮。

info 备注: 在创建 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 之旅