【发布时间】:2014-09-26 16:18:12
【问题描述】:
我正在尝试进入虚幻引擎 4 模块开发,开始时使用空白模块,但一开始就遇到了障碍。
我为非游戏模块完成的教程:https://wiki.unrealengine.com/An_Int...to_UE4_Plugins。我尝试完全按照源代码进行操作,然后将所有内容修改为 TestPlugin(因为我也无法通过教程使其工作)。
由于某种原因,每当我尝试在编辑器中激活模块时,我都会收到“找不到“模块”模块”。我想弄清楚我是否遗漏了什么,这是我到目前为止的代码:
../Engine/Plugins/TestPlugin/TestPlugin.uplugin
{
"FileVersion" : 3,
"FriendlyName" : "Test Plugin",
"Version" : 1,
"VersionName": "1.0",
"EngineVersion" : 1579795,
"Description" : "Description goes here",
"Category" : "Test.Module",
"CreatedBy" : "arhon",
"CreatedByURL" : "http://stackoverflowcom",
"CanContainContent" : "true",
"Modules" :
[
{
"Name" : "Module",
"Type" : "Developer",
"LoadingPhase" : "PreDefault"
}
]
}
../Engine/Plugins/TestPlugin/Source/TestPlugin/TestPlugin.cpp
void FTestPlugin::StartupTestPlugin()
{
if (ITestPlugin::IsAvailable())
{
UE_LOG(TestPlugin, Log, TEXT("%s"), ITestPlugin::Get().IsThisNumber42(42) ? TEXT("True") : TEXT("False"));
UE_LOG(TestPlugin, Log, TEXT("%s"), ITestPlugin::Get().IsThisNumber42(12) ? TEXT("True") : TEXT("False"));
}
}
../Engine/Plugins/TestPlugin/Source/TestPlugin/TestPlugin.Build.cs
using UnrealBuildTool;
public class TestPlugin : ModuleRules
{
public TestPlugin(TargetInfo Target)
{
PublicDependencyModuleNames.AddRange(new string[] { "Core", "CoreUObject", "Engine", "InputCore" });
PrivateDependencyModuleNames.AddRange(new string[] { "TestPlugin" });
DynamicallyLoadedModuleNames.AddRange(new string[] { "StandAlone" });
}
}
../Engine/Plugins/TestPlugin/Source/TestPlugin/Public/ITestPlugin.h
#pragma once
#include "ModuleManager.h"
/**
* The public interface to this module. In most cases, this interface is only public to sibling modules
* within this plugin.
*/
class ITestPlugin : public ITestPluginInterface
{
public:
/**
* Singleton-like access to this module's interface. This is just for convenience!
* Beware of calling this during the shutdown phase, though. Your module might have been unloaded already.
*
* @return Returns singleton instance, loading the module on demand if needed
*/
static inline ITestPlugin& Get()
{
return FModuleManager::LoadModuleChecked< ITestPlugin >("TestPlugin");
}
/**
* Checks to see if this module is loaded and ready. It is only valid to call Get() if IsAvailable() returns true.
*
* @return True if the module is loaded and ready to use
*/
static inline bool IsAvailable()
{
return FModuleManager::Get().IsModuleLoaded("TestPlugin");
}
virtual bool IsThisNumber42(int32 num) = 0;
};
../Engine/Plugins/TestPlugin/Source/TestPlugin/Private/TestPluginPrivatePCH.h
#include "ITestPlugin.h"
// You should place include statements to your module's private header files here. You only need to
// add includes for headers that are used in most of your module's source files though.
../Engine/Plugins/TestPlugin/Source/TestPlugin/Private/TestPlugin.h
#pragma once
class TestPluginImpl : public ITestPlugin
{
public:
/** IModuleInterface implementation */
void StartupTestPlugin();
void ShutdownTestPlugin();
bool IsThisNumber42(int32 num);
};
../Engine/Plugins/TestPlugin/Source/TestPlugin/Private/TestPlugin.cpp
#include "TestPluginPrivatePCH.h"
#include "TestPlugin.h"
void TestPluginImpl::StartupTestPlugin()
{
}
void TestPluginImpl::ShutdownTestPlugin()
{
}
bool TestPluginImpl::IsThisNumber42(int32 num)
{
return num == 42;
}
IMPLEMENT_MODULE(TestPluginImpl, TestPlugin)
【问题讨论】:
-
当您的问题显示在首页时,人们只会看到前 10 个单词左右。小心使用这些词。
-
感谢您的提示。有什么建议如何改写这个问题吗?
-
我已经对其进行了编辑以省略“请原谅新手问题”或其他任何内容。
-
谢谢,下次我发问题时会尽量记住这一点(我相信在不久的将来会有更多像这样的可怕问题)
标签: c++ unreal-engine4