如图所示,now能够拿到所有的当前时间信息
用1 / delta time就能够得到FPS,其他操作时防止刷新过快,看不清字,另外,帧率越高,性能越好
第一个蓝图是世界时间运行的快慢,1是标准速度,0.1是标准速度的0.1倍,另外,第一个蓝图只能影响场景,不能影响到pawn,所以要有第二组蓝图节点,该节点用于游戏慢动作
显示场景三角面数:
stat RHI
DDC(DeriverdDataCache):中文名字叫派生数据缓存
将之加入到项目后就存在了DDC
点击Settings
编辑缓存位置
点击Brouse
显示的文件就是加入到项目的DDC了,在这里可以进行删除
玩家飞行逻辑:
如何在Actor内添加输入
UE4自带空气墙
用于制作技能CD,防止暂停过后,CD还在计算,所以用这个值来判断技能CD是否结束,是否能进行下一次攻击
橡皮绳actor:
点击Attach Start为false,开始的位置就成非悬挂状态
点击Attach End为false,结束的位置就成非悬挂状态
SceneComponent比ActorComponent多一个位置信息,SceneComponent继承自ActorComponent
以上为SceneComponent
这个才是ActorComponent,没有位置信息
Spline今天看到的新用法:
右键点击spline
即可用样条线直接画形状,比如说圆形啊什么的,不然圆形你不知道这个确实还不好弄不出来
解决曝光问题:
关闭Eye Adaptation
场景就不曝光了
这个地方只能用TEXT(),可以写FString a = TEXT("123");
可以static ConstructorHelpers::FObjectFinder<UMaterial> flyMat(TEXT("123"));
但是不能static ConstructorHelpers::FObjectFinder<UMaterial> flyMat(a);//报错
解决办法,申明一个const TCHAR*的变量即可解决该问题
FString转化未const CHAR*
ZOrder决定绘制的顺序,值越小,绘制的优先级越高,所以值大的在值小的上层(可遮挡)
UI贴图关闭MIPS,可以省三分之一的内存,一般ASTC 4*4压缩肉眼看不出变化
打包后,可以在这个目录下设置一些GameUserSetting的参数,比如说分辨率,项目质量设置,是否全屏等等
获取变量类型的三种方法:
1、std::is_same
相同为1,不同为0
2、typeid().name();
打印成int类型
3、std::is_floating_point<Type>::value std::is_integral<Type>::value std::is_base_of<FString,Type>()
对应上了就是1,不对应就是0
std::is_intergral也一样
Is_base_of,是否为什么的父类
UE5的Nanite,自动对模型做LOD,三角面可根据距离平滑过渡,提高性能优化
导入模型的时候把这个给√上
Nanite通常在三角面数多的情况下使用,才能优化,三角面不多还是用普通的就行
布料系统(毛发、布料实现)
若GamePlay框架中,最好是继承自GameMode而不是GameModeBase,不然所有蓝图的BeginPlay将失效
CORE_API DECLARE_LOG_CATEGORY_EXTERN(LogHAL, Log, All);
LogHAL是新Log名,其它照抄就可以
以后就这么用:
UE_LOG(LogHAL, Fatal, TEXT("FGenericPlatformProcess::ReadPipeToArray not implemented on this platform"));
骚操作
法线混合不要直接用Add,用这个BlendAngleCorrectedNormals
CameraVector是材质像素朝向相机位置的一个方向向量,相机位置移动,内部uv也会移动,所以这样写有一种贴图在洞里面的感觉
球形加上Noise很有用,比如这个可以做撒出去的水
Timer里面如何绑定Lambda?
FTimerDelegate timeDelegate;
FTimerHandle timeHandle;
auto lambdaFunc = [](){
...
};
timeDelegate.BindLambda(lambdaFunc);
GetWorld()->GetTimerManager().SetTimer(timeHandle, timeDelegate, 1.f, true);
制作技能标记起始点到终点的抛物线轨迹
ExposeOnSpawn暴漏给SpawnActor,前提要把变量暴露给编辑器,例如BlueprintReadOnly,BlueprintReadWrite
UE C++如何使用Timeline
UE 用 try catch的写法需要在对应模块的.cs里面添加:bEnableExceptions = true;
打包报错 :
C4668
加上这个
#include "Windows/AllowWindowsPlatformTypes.h"
#include "Windows/PreWindowsApi.h"
#include "冲突的头文件"
#include "Windows/PostWindowsApi.h"
#include "Windows/HideWindowsPlatformTypes.h"
再在.build.cs里面加
bEnableUndefinedIdentifierWarnings = false;
将Actor附着到另一个Actor上,并且可以Detach
FVector UHermesWeatherSkyPluginBPLibrary::GetEidtorMainPawn(AActor* actor) {
auto world = actor->GetWorld();
if (world == nullptr) return FVector{};
auto viewLocations = world->ViewLocationsRenderedLastFrame;
if (viewLocations.Num() == 0) {
return FVector{};
}
FVector camLocation = viewLocations[0];
return camLocation;
}
如何在编辑器下拿到pawn的位置
在这里设置粒子的裁剪距离
在这里设置例子排序模式
如何材质遮罩值为0时,则不做处理,提升性能
如何快速制作折射效果?
1、材质改为半透明材质
2、反射模式改为像素法线偏移
3、透明度小于1
4、要一个折射效果的法线贴图!
5、折射率要不等于1
这样也可以画圆环,SphereMask是通过离B值差值为Radius的进行渲染,硬度用来做离B值的插值曲线弱化