算到现在使用UE4大概有两年了吧,从它每月还收费19美金的时候用到现在4.13都出来了。这是一款很强大的引擎,因此我也总结了方方面面的一些经验,这篇博客会时时更新。
Editor Only
如果想要代码只在Editor下编译,需要如下操作:
#if WITH_EDITOR
//editor only code -- doesn't appear in final game
#endif
Lightmass
- Stationary的光照如何产生软阴影?
开启Use Area Shadows for Stationary Lights。
Build Error
- InputCoreTypes.h如果出现各种syntax error.
在PCH中加入#include "Engine.h"
即可。
Plugin
- 如果你要构建一个Function Lib Plugin,记得将LoadingPhase设定为PreDefault.
Console Command
创建Console Command的方法:在GameMode中创建对应的函数,UFUNCTION的Category需要为ExecFunctions
创建无参数的Console Command
UFUNCTION(Exec, Category = ExecFunctions)
void DoSomething();
创建带参数的Console Command
/*Function with one parameter*/
UFUNCTION(Exec, Category = ExecFunctions)
void DoSomethingElse(float param);
如此即可
Android
获得Env
auto env = FAndroidApplication::GetJavaEnv();
GNativeAndroidApp
调用extern struct android_app* GNativeAndroidApp;
记得需要加入
#include <android_native_app_glue.h>
JNI
记得在.cs文件中的PrivateIncludePaths
加入:
"Runtime/Launch/Private"
锁帧
- 直接修改引擎设置的方法:
在config/ConsoleVariables.ini中找到[Startup]
在其后加入:
t.MaxFPS=30
- 针对项目的方法:
在DefaultEngine.ini中查找[SystemSettings]
的section,如果没有则新建一个,在其后加入:
t.MaxFPS=30
Log to screen
如果你想向屏幕上输出一些东西,可以使用如下代码:
GEngine->AddOnScreenDebugMessage(-1, -1, FColor::Red, TEXT("阿妹你看,上帝压狗! "));
Log Category
如果你想要定义并且使用自己的Log,那么你应该这么做:
// Decleare Log Category
// General Log
DECLARE_LOG_CATEGORY_EXTERN(YourLog, Log, All);
// Logging during game startup
DECLARE_LOG_CATEGORY_EXTERN(YourInit, Log, All);
// Logging for your AI system
DECLARE_LOG_CATEGORY_EXTERN(YourAI, Log, All);