UE4蓝图笔记



1.函数可以是 纯函数(Pure) 也可以是 非纯函数 。主要的区别是纯函数不会以任何方式修改状态或者类的成员, 而非纯函数可以自由地修改状态。
纯函数一般用于 getter 函数 或者仅输出一个数据值的操作符。


2.对于每个连接到纯函数上的节点,都会调用一次纯函数。


3.在代码中定义的函数的函数声明中指定 BlueprintPure 关键字。


4.蓝图中一个方块表示一个节点,节点是个函数,节点中有引脚,五角形引脚是流程引脚,圆形引脚是参数和返回数引脚。


5.timeline节点中play是从上次终止的地方开始的,play from start是从最开头开始。(用timeline做一个动画, 播放,一半的时候再点停止,然
后再点play和play from start,效果是不一样的)


6.InvertRotator :逆转旋转角。输入一个Rotator(Vector3)型值,输出一个Rotator型值。


7.CombineRotator :合成旋转角。输入两个Rotator型值,输出一个Rotator型值。


8.输入的键值可以用变量装载,在细节窗口将变量的类型设置为Kye型,并且赋默认值。


9.蓝图类创建要先在视口窗口中设置相应属性再拉到场景中,空物体可以看情况。


10.抓取对象时,Cast To再加类别(Actor、Pawn、Trigger、自设类、、、)


11.太阳光照蓝图使用Lever BluePrint,在世界大纲中找到Light Soure和Sky Sphere作为变量进行设置,用TimeLine输出个变化的float值来设置
rotation的一轴模仿日出日落,另外还要用Update Sun Direction函数来更新太阳光照。


12.在场景中选中对象,再在蓝图编辑页面右击输入get快速获取对象变量。


13.蓝图类网格替换:在Viewport页面选中对象添加相应的网格组件,再将原来的网格组件删除。


14.如要对蓝图类的网格进行编辑,需添加Movement组件。


15.要在蓝图类网格上显示文字,需添加TextRender组件。设置文字后,因为没有自动更新,所以要先将蓝图类拉到场景中,然后再回到Viewport页面
继续设置。


16.AI角色需添加PawnSensing组件才能“看”到玩家。选中PawnSensing右击选择OnSeePawn(PawnSensing)检测“看到”这事件,然后对比对方是不
是玩家(方法:Cast To ThirdPersonCharacter ;对象:Get Player Charater),确定目标后跟随目标(AI MoveTo),到达目的点后,可以
DestroyActor,同时添加爆炸效果Spawn Emitter at Location。


17.小地图制作 : 在Character身上绑定小地图摄像机,并给它添加一个SceneCaptureComponent2D组件,在Details视窗的SceneCapture下设置地图贴
图,贴图需预先在Content Browser下创建一个 TextureRenderTarget2D 图片,打开图片窗口在Details视窗的Compression下设置Compression Setings
为UserInterface2D(RGBA)格式,另外需注意将小地图摄像机的Activation设置的勾去掉,不然小地图摄像机会取代主摄像机,右击贴图创建Material,


18.Player Start :仅作生成Pawn的Transform用,其他操作不在该类中执行。


19.Character类蓝图的Pawn要将Auto Possess Player选项设为Player 0才会被默认为主角,才可以对主角进行控制。


20.BSP转换的StaticMesh没有collision,需手动制作。


21.Player的控制需自己编写蓝图添加上去。


22.碰撞预设值决定两个物体碰撞是发生全部硬碰block all、部分硬碰block only还是触发trigger


23.(1)虚幻中的类前缀你会见到U,A,F,以下就是很好的罗列其中的意义:
    ? U: UObject继承过来的,例如UTexture 
    ? A: AActor继承过来的,例如AGameMode 
    ? F: 其他的类和结构,例如FName, FVector 
    ? T:模板,例如TArray,TMap,TQueue 
    ? I: 接口类,ITransaction 
    ? E:枚举, ESelectionMode 
    ? B: Boolean, bEnabled


   (2)用宏定义来包裹C++代码 
    ? UCLASS 来包裹类 
    ? USTRUCT 包裹结构 
    ? UFUNCTION 包裹功能 
    ? UPROPERTY 包裹属性


24.移动是一个过程,单纯的按键只是true或者false的bool值,所以需自设Axis Mapping轴映射按键,使按键触发输入轴事件,输入成逐变变量,
类同U3D的Mouse Axis。


25.静态网格物体可以创建破裂网格物体,发生碰撞后会破裂成碎片。


26.UE4骨架导入,要将Skeletal Mesh拉过去,根据需要(要不要原骨架,None或者名字)在选框里选择,选None系统会自动生成默认的Skeketon和
PhysicsAsset文件(三种文件的后辍都是.uasset)。动画导入,拉过去后需要选定骨架。


27.Character本身已有胶囊体碰撞盒,要添加其他碰撞盒,需要另外添加插槽绑定碰撞盒。


28.细节Detail页面下相机的设定Camera Setting中,勾选Use Pawn Control Rotation会使相机的Rotation跟随Pawn变动,相机会不能锁定主角。
Character蓝图的视口页面里的Camera Setting项下应勾选Use Controller View Rotation。


29.Projectile Movement组件必须勾选Initial Velocity in Local Space选项,否则Velocity的方向不会改变,只会按照初始设置的Velocity运动。


30.Collision必须勾上Simulation Generates Hit Events才能返回Hit事件,否则Hit事件不执行。


31.自定义事件Custom可以在本蓝图里随意调用,适当利用自定义事件可以是蓝图代码更加灵活。


32.将一些功能写在组件蓝图BlueprintComponent里,根据需要添加组件,使工作更高效。


33.构建蓝图仅在生成构建Actor时执行,可以时重复生成的Actor具有各异性,降低重复感。


34.For循环开始执行之后很难被Break,应设置自设事件,在循环体里设置打断条件,触发条件时调用自设事件。


35.插槽可以用来绑定一些特定的附件在骨骼的某个位置上,比如碰撞盒、武器、头发鞭、盔甲部件等等。


36.在关卡蓝图调用或者添加其他蓝图类里的事件(包括自定义事件),需要将蓝图类拉到场景里并选定,然后在关卡蓝图编辑页面右击可以看到调用
选项。不选定场景物体在关卡蓝图右击是不会显示调用选项。


37.人物装备绑定 :在人物蓝图的视口页面中,添加一个ChildActor在人物上,移好位置,在事件页面用AttachTo函数添加组件,在资源文件夹里将要
加的物体拉到事件页面里,页面出现一个Add*(类型)*Component函数,设置好添加组件的相对Transform属性,然后将输出值连到AttachTo的目标节
点上。


38.人物转向 : Character组件里细节页面的Paw项下要设置相应的转向设置才能实现人物转向功能,Camera组件里细节页面的Camera Settings项下要
勾选Use Pawn Control Rotation选项才能使相机跟随人物转向。


39.人物移动偏差 :CharacterMovement组件里细节页面的CharacterMovement项下的Orient Rotation to Movement(方向适应移动)选项要去掉。


40.摄像机拍摄筛选 :在蓝图类的视口页面里选定物理对象(Mesh),在细节页面的Rendering下拉项,勾Render in Main Pass是游戏里摄像机能看见,
勾Owner No See是玩家看不见,勾Only Owner See是只有玩家看见。


41.选定物理对象(Mesh),在细节页面的Lighting项下,勾Cast Shadow是投射物体的阴影。


42.弹簧臂与相机 :在视窗页面的组件页面下添加一个Spring Arm 到主角身上,将弹簧臂的Camera Setting 勾选Use Controller ViewRotation,然后
再添加一个Camera,父类设为Spring Arm,Camera Setting 不再勾选Use Controller View Rotation(弹簧臂已经跟随转向,相机再转向就不再对准主
角了)。


42.动画片段文件导入后,播放动画片段时,布娃娃Mesh的位置会有所偏差,可以打开骨骼,右击根骨骼Root(不是下拉项)打开菜单选择Recursively 
Set Transtantion Retargeting Skeleton项,布娃娃Mesh就会跟随骨骼,但此时布娃娃Mesh可能不是载站在地面上了,这时先选取盆骨,在其右边的的
Skeleton下拉项中选取AnimationScaled项,这时布娃娃就重新站回地面,再将跟骨骼Root右边的Skeleton选项选取AnimationScaled跟随动画就可以了。


43.Billboard :引擎自带的公告板组件。


44.碰撞事件,主动碰过去的最好用Hit,被碰的最好用Overlap。


45.TimeLine 可以在本类中直接通过,名字来调用,名字不重名。


46.字符串添加字符会在原字符串的左边。


47.面片的材质必须是贴花材质才会渲染出来。


48.接口设置。先创建Interface类蓝图设定接口函数,然后在要添加接口的类中点击工具栏的类设置Class Defaults,在Details-Interface-Implemented
 Interfaces项下Add一个接口,将创建好的接口类蓝图拉进去。调用时Cast To已添加接口的类,调用其中的函数即可。


49.利用向量的点乘((x1,y1)·(x2,y2)= x1x2 + y1y2)(a→·b→ =|a→||a→|cosθ)可以检测物体是否面向摄像机,结果为标量,正背负面。
利用向量的叉乘(a→·b→ =|a→||a→|sinθ)可以求物体光照相关问题。


50.描边轮廓制作:1)编写Post Process材质蓝图,Details—Material-Material Donmain项设为Post Process,Details-Post Process Material
-Blendable Location项设为Before Translucency ;2)在场景的世界大纲页面里找出GlobalPostProcessVolume,在细节页面--Post Process Volume
--Settings--Blendables--Array项新增一个元素,导入材质球或者材质实例 ;3)选择需要描边的物体,把Rendering的下拉项Render CustomDepth 
pass勾上。


51.后期处理,编好材质后,在GlobalPostProcessVolume或者在相机Deta里设置。


52.关卡蓝图不接受按键输入。


53.破碎物体:
  Damage:损伤。Damage Threshold,损坏程度;Damage Spread,裂痕传播的距离;Enable Impact Damage,启用冲击损坏;Impact Damage,冲击
损伤;Default Impact Damage Depth,默认冲击损伤深度;Custom Impact Resistance,自设冲击反弹;Impact Resistance,冲击反弹量;Damage
Cap,损伤上限;Impact Velocity Threshold,冲击速度的最小阀值;Max Chunk Speed,最大组块速度;Fracture Impact Scale,裂口相互冲击规
模(越大炸开越远)。
  Flags:标志。Accumlate Damage,积累损伤;Asset Defined Support,资源判定支持;World Support,外界支持;Debris Timeout,碎片消亡周
期;Debris Max Separation,碎片消亡最大距离;Crumble Smallest Chunks,破碎最小组块;Accurate Raycasts,精确射线投射;Use Valid 
Bounds,使用合法弹跳;Form Extended Structure,格式化扩展结构。



























































猜你喜欢

转载自blog.csdn.net/piger91/article/details/52370807