项目迁移
项目名为为:PikaqiuSpeed
原引擎路径:D:\UE4ENGINE\UnrealEngine-4.22
迁移后引擎的路径:D:\UE4ENGINE_CUSTOM\UnrealEngine-4.22
原环境:VS2017
迁移后的环境:VS2019


将PikaqiuSpeed.vcxproj文件里的D:\UE4ENGINE\UnrealEngine-4.22全部替换成D:\UE4ENGINE_CUSTOM\UnrealEngine-4.22
替换后,启动vs,项目->属性->NMake里可以查看替换后的路径

metahost.h没找到的问题:


typeinfo.h没有找到的问题:


安装完成后,将安装路径添加到项目------属性------VC++目录------包含目录中

无法找到 mscoree.lib的问题:安装4.6.1SDK后,清理------重新生成UE4引擎


库文件位置:上面三个为4.8(x32,x64,arm),下面为4.6.1,不安装4.6.1的SDK,将4.8的路径加入上面的VC++目录可能也可以(未测试);


建议地形大小

合并贴图层



排除方式混合图层后,合并图层并直接保存;
碰撞
1)Collision Enabled类型说明
(1)No Collision(无碰撞) - 不同该对象发生碰撞,无论是踪迹碰撞还是物理碰撞。
(2)Query Only,仅用于查询,不会考虑物理仿真;可以进行各种trace,sweep,Overlap事件的触发,但是不会进行物理模拟,简单的讲就是运动时不会产生任何碰撞。人物的移动物理属于查询;
(3)Physics Only,仅用于物理仿真,不考虑查询;表示只能进行物理碰撞与运动模拟,但是不会触发任何事件。
(4)Collision Enabled(启用碰撞) - 该刚体用于物理模拟和碰撞查询。
2)任意两个物体有碰撞的条件
(1)一定是互相设置了Collision Preset。
(2)至少有一个实体开启了simulate physics。
(3)该static Mesh必须要有碰撞盒(或者这个Actor有碰撞组件,比如sphere collision);
(4)对于多组件实体Actor,只要那个组件的父组件开启了simulate physics,就相当于其子组件也开启了simulate physics。

(5)mesh里加载了对应的物理资源

3)碰撞通道
(1)ObjectType决定了物体本身是什么碰撞类型;碰撞响应则表示本身与其它类型的物体进行碰撞时的响应;
Generate Overlap Event一定要勾选,否则选Overlap时,不会触发绑定的碰撞事件;

(2)常见类型物体示例:
WorldStatic:静态几何物件,如山石,树干等;
WorldDynamic:动态几何物件,如房门,地面可拾取物等;
Pawn:人物或类人的东西,如玩家,野怪;
PhysicsBody:物理体;
Vehicle:载具,如摩托车,飞机等;
Destructible:可破坏物件,如栅栏,窗户等;
(3)注意事项:ObjectType配置的自由度很高,你也可以把石头配置成载具的ObjectType;
4)Trace Response与Object Response,主要是通道过滤比较方便,直观理解射线检测类的配置成Trace Response,对象移动类的配置成Object Response;
5)碰撞事件需要手动消除飞行中的特效

单个模型会多次触发碰撞事件的问题

单个模型中,每个带有碰撞属性的组件,都会单独触发一次事件,如上图,如果不将红线中的三个组件的碰撞设置为无碰撞,则会在同一时间触发三次同样的碰撞事件;
材质编辑器的背景


Tick函数里的参数DeltaTime的值
DeltaTime的值为Tick函数执行的间隔

下图为1秒内Tick的值,总共执行了19次,每次执行的时间间隔为0.05秒多;

UE4中形参为UObject* WorldContextObject的即为GetWrold()返回的UWrold;

动画蓝图
前置资源:









创建动画蓝图(待机状态):


在蓝图动画里创建一个状态机,并载入待机的动画序列




载入动画序列



将动画蓝图载入到主塔的蓝图里


创建蒙太奇动画(攻击状态):







动画蓝图中载入蒙太奇动画:


添加死亡状态:

载入死亡动画序列

设置死亡动画的条件变量:


死亡变量的值需要从蓝图中获取

死亡变量获取



和攻击一样,创建出生的蒙太奇动画

灯光烘焙问题

解决方法:
第一步:打开ue4c++项目或打开UE4.sln先将vs中Dubug Editor模式改为Development Editor
第二步:在vs中找到UnrealLightmass.cpp重新编译
第三部:将vs中Development Editor改回Dubug Editor,启动重新Build Lighting Only即可
系统设置菜单动画示例
无动画UI位置

动画起启点位置

结束点位置同无地画时的状态

动画重定向
动画蓝图也可以进行重定向操作;
1)重定向的源骨骼需要一个模板


选择好模板后,还可以点自动映射或自己手动调整对应的骨骼,自动映射只对骨骼名称和系统默认的一样时才会生效;
除了模型里自带的模板,也可以自己在骨骼上创建一个新模板

2)选择一个源骨骼对应的网格体;

3)目标骨骼也和源骨骼一样,选择模板和网格体;

目标骨骼的参考姿势要和源骨骼的参考姿势一样,不一样的话需要能过修改姿势修改;


4)修改目标骨骼的重定向方式;


被重定向的目标骨骼,root和ik设置成动画,盆骨设置成动画缩放,其它的都要设置成骨骼;

5)源骨骼和目标骨骼都需要设置预览网格体;

6)动画重定向




行为树说明

selector会依次执行其子节点的内容,子节点中执行成功一个则返回true(剩下的不执行),如果其所有子节点均执行失败才会返回false;
sequence也会依次执行其子点的内容,子节点如果执行成功则会继续执行下一个,如果有节点执行失败,则返回false;
simpleParallel则是其子节点一起执行;
行为树Server的运行间隔

UE4编辑窗口中,蒙太奇动画不显示
如果创建蒙太奇动画的动画序列是叠加动画,则无法在在编辑窗口中显示


测量长度,测量距离
在顶视图,或者侧视图,用鼠标中间拉出红线。。。。一个单位是1cm;
AIDebug模式
进游戏后按Enter键左边的’键,可以调出AIDebug模式.再按小键盘的数字键4,可以看到AI的感知.如果用的87键键盘可以使用WIN+R 输入osk运行虚拟键盘.
人物移动方式

朝旋转的方向移动

红框上面的选项是设置速率的

动画序列的导入和导出
UE4导出


3dmax导出

UE4导入(60表示以60帧的格式导入)

位移动画

带有位移的动画序列,需要在创建蒙太奇动画前开启RootMotion,否则在带有位移的动画播放完成后,角色会被拉回到原来的位置;
UE4中的关联数组



UE4中动画截取

UE4动画融合

duration可以调节从一个动画过渡到另一个动画时的时间;
摄像机的偏移设置



设置跳跃时的重力可以改变角色跳跃后下降的速度


起跳高度

接口类创建

清空数组
arr.empty();
动画蓝图里的RootMotion


禁止角色移动时,可以通过将角色最大移动速度设置为0,移动角度设置为0来实现;

定时器传参
参数为PikaDelegate里的false;

动画蒙太奇里修改动画的播放速度和播放时间

蒙太奇动画的BlendOut里的BlendTime设置
该时间为0.25时,表示播放本蒙太奇动画时,当动画时间还有25%时,就开始和下一动画进行混和;

透明材质
按住1键再点击鼠标左键


动画蓝图里的动画通知AnimNotify





动画蓝图警告的解决方法



max导出模型到UE4时的轴向设置

在UE4里自动生成静态mesh的光照UV

贴图分类
固有色贴图(下图2)、高光贴图(下图3)、法线贴图(下图1)

贴图材质

批量操作

角色蓝图中暂停mesh的动画

UI里选择填充后,后面的数值可以控制填充的比例

maya操作
1)F2-F6切换菜单

2)空格键后,中间的maya按钮切换视图

3)选择模型后,数字键1-6切换模型的显示模式
1键:棱角显示(与圆滑对应)--2键:有线框的圆滑显示(只是暂时的效果,渲染后恢复正常)--3键:没有线框的圆滑显示 --4键:线框显示--5键:实体显示--6键:材质、贴图显示--7键:灯光显示(没有灯光显示为黑色)
此外,选择横着菜单栏中的着色 —> 着色对象上的线框,实体线框同时展示。 选择着色—> X射线,产生半透效果。
4)maya导入的fbx模型(如UE4小白人)需要先解除锁定,才能进行旋转、缩放等操作;


5)显示骨骼,按4键进入网格显示就可以查看被模型挡住的骨骼

6)显示大纲视图

7)红色框里为同一套骨架下的多个LOD

8)重置模型中心点


场景越来越亮,且不是后期框中自动曝光的问题时,需要在项目设置中的渲染菜单中取消自动曝光选项


蓝图中的主UI加载
蓝图方式下,主UI加关卡蓝图中加载


海水材质蓝图
1)开启生成网格体距离场;

2)将海水蓝图拖入场景;

3)海浪效果,将海浪控制蓝图拖入场景;


4)调节BP_WaveSpawner_Automatic的位置;

UE5.4水质为白色

打开材质里的参数



UE5性能消耗查看


流送纹理池查看和设置
查看
stat streaming
Streaming Pool为当前设置的流送池大小,该值不能大于显存大小;
Requred Pool为当前需要的游戏送池大小;

流送池设置
r.streaming.Poolsize 2000
取消植物的动态阴影bCastDynamicShadow,否则在白天的光照下,植物的叶子会出现闪烁的现象;
