可可西

UE4 Editor高级技巧

UE4默认1uu(unreal unit,虚幻单位)为1cm

对于UE3到UE4的转换,可参考:UE3 to UE4 Transition Guide

 

编辑器快捷键

按住鼠标右键 + WASD

按住鼠标右键 + 数字键盘8246

按住鼠标右键 + 方向键

在场景中前左后右移动主摄像机

注:此时还可通过滚轮来加快和减慢摄像机的速度

按住鼠标右键 + EQ

按住鼠标右键 + 数字键盘97

按住鼠标右键 + PageUp, PageDown

在场景中上下移动主摄像机

按住鼠标右键 + C(Z)

按住鼠标右键 + 数字键盘3(1)

不断按C,不断缩写FOV(Filed Of View)

不断按Z,不断放大FOV(Filed Of View)

松开右键,恢复到原来的FOV

 

想调整主摄像机的FOV,可修改红框中的数值:

` 调用命令输入框 / 控制台输入框
F

在当前视窗中让选中物体居中显示

注:在World Outliner场景树上双击物体也可以达到同样的目的

Alt + 拖曳左键 主摄像机围绕着选中物体来观察
拖曳中键 切换到Top、Bottom、Left、Right、Front、Back视图,拖曳中键,来测量模型的长度
End

让选中物体的Bound落在其下面最近的碰撞上

Shift + End 让选中物体底部中心落在其下面最近的碰撞上(比End更贴合)
Alt + End 让选中物体的轴心点落在其下面最近的碰撞上
W

对选中的物体切换到移动模式

注:在工具栏的Settings菜单中有一个Show Transform Widget(显示变换控件)开关。勾选才会显示变换控件

E

对选中的物体切换到旋转模式

注:在工具栏的Settings菜单中有一个Show Transform Widget(显示变换控件)开关。勾选才会显示变换控件

R

对选中的物体切换到缩放模式

注:在工具栏的Settings菜单中有一个Show Transform Widget(显示变换控件)开关。勾选才会显示变换控件

空格 切换选中物体的操作模式(移动、旋转、缩放)
Ctrl + 拖曳左键 对选中物体的操作模式(移动、旋转、缩放)进行X轴变换
Ctrl + 拖曳右键 对选中物体的操作模式(移动、旋转、缩放)进行Y轴变换
Ctrl + 拖曳中键

按着Ctrl键,朝不同方向拖曳中键,会弹出不同的快捷菜单(如下):

Alt + 拖曳中键

临时改变锚点的位置

注:临时改变锚点的位置后,再次点击后,锚点会重新回来原来位置。

按住V + 鼠标放到三个坐标轴的圆球处(会显示为黄色)并左键拖曳

显示出场景中各个物件的顶点(蓝色),移动物体靠近这些顶点时,会将三个坐标轴的圆球的对齐到顶点上

Alt 移动、旋转、缩放时,复制选中物体
Alt+Shift 移动、旋转、缩放时,让场景运动而保持物体不动地进行物体复制
Shift

①移动、旋转、缩放时,让场景运动而保持物体不动   

②LandScape -- Sculpt(塑造)  左键点击来降低地形

Ctrl + G

编组

注1:编组的对象必须属于同一个关卡

 

编组后,会在当前关卡中,创建一个AGroupActor对象

注2:点击时进行组选,需提前开启组选开关(Ctrl + Shift + G)

Shift + G 取消编组
Alt + A

选中一个对象Obj1后,按Alt + A,进入pick模式

点击同关卡其他对象Obj2,即可将Obj2设置为Obj1的父对象

 

注1:这样就可以通过移动Obj2,来一起移动2个对象了

注2:设为父子关系的对象必须要在同一个关卡中

注3:通过在World Outliner中拖曳对象节点,也可以将不同对象设为父子关系

T 开关半透明选择
G 开关游戏模式
Ctrl + R 开关RealTime模式
H 隐藏选中物体
Ctrl + H 全部显示物体
Alt + 0, 2-8 使用不同的viewmode进行渲染当前Viewport窗口
F8 Play时,Possess或Eject玩家
Shift + F1 Play时,游戏取得鼠标控制或释放鼠标控制(使得可操作编辑器)
F9 截屏
F11 沉浸模式(Immersive Mode)。即:全屏和取消全屏当前Viewport窗口
Shift + F11 全屏和取消全屏编辑器
Esc

① 编辑时:取消场景中的物体选择

② Play时:退出PIE

Ctrl + 点选 选择多个物体
Ctrl + A 全选场景中的所有物体
Ctrl + Alt + 拖曳左键

框选场景中的物体

注1:在工具栏的Settings菜单中有一个Strict Box Selection(严格框选择)开关

       如果勾选,Actor必须完全位于选取框中才能被选中。

注2:在工具栏的Settings菜单中有一个Box Select Occluded Objects(框选择遮挡对象)开关

       如果勾选,被遮挡的Actor也会被选取框选中

Ctrl + B 对选中的物体,在Content Browser中显示其资产存放位置
Ctrl + E 对选中的物体,用编辑器打开其资产
Alt + Shift + R 对选中的物体,打开Reference Viewer查看该资产的引用关系。
Ctrl + 滚轮 缩放Content Browser中的文件夹图标

编辑器的快捷键设置,见菜单Editor -- Editor Preferences...

更多快捷键请参看:视口功能按钮 

 

蓝图快捷键

拖曳左键 框选蓝图节点
Ctrl + 点选 多选蓝图节点
C 对选择的蓝图节点添加Comment块
拖曳右键 Pan浏览
滚轮 放大缩小(最大放大到1:1)
Ctrl + 滚轮 放大缩小(最大放大到Zoom+7)
Alt + 点选曲线 断开曲线逻辑
Ctrl + 拖曳Pin 可将当前Pin点的所有连接线移动到其他Pin点
Shift + 点击Pin

将Pin点的连接线高亮

在连接线上双击来添加Reroute节点

 

也可以,从右键菜单中选择Add Reroute Node选项来添加

更多蓝图用法,详见“蓝图可视化脚本” 

 

PC平台开启Shader Model 5预览(缺省)

相关配置信息保存在Saved\Config\Windows\EditorPerProjectUserSettings.ini

[/Script/UnrealEd.EditorPerProjectUserSettings]
PreviewFeatureLevel=3
PreviewPlatformName=None
PreviewShaderFormatName=None
bPreviewFeatureLevelActive=False

 

PC平台开启Android ES3.1预览

EShaderPlatform对应SP_PCD3D_ES3_1

相关配置信息保存在Saved\Config\Windows\EditorPerProjectUserSettings.ini

[/Script/UnrealEd.EditorPerProjectUserSettings]
PreviewFeatureLevel=1
PreviewPlatformName=Android
PreviewShaderFormatName=GLSL_ES3_1_ANDROID
bPreviewFeatureLevelActive=True

对于Standalone需要带上-FeatureLevelES31-FeatureLevelES3_1参数才能开启

也可以从编辑器里面启动ES3.1的standalone,如下:

PC平台开启Android ES3.1预览,会使用D3D11的API和hlsl代码来模拟ES3.1逻辑

 

PC平台缺省开启D3D12

开启后,Editor、Standalone、cook版本都会缺省使用D3D12

设置后,会在DefaultEngine.ini中保存

[/Script/WindowsTargetPlatform.WindowsTargetSettings]
DefaultGraphicsRHI=DefaultGraphicsRHI_DX12

 

关闭工具条、面板

① 左键点击红圈左上角三角处

② 会显示出Tab标签,点击关闭按钮即可关闭

③ 在Tab标签上右键菜单,可重新隐藏Tab标签

 

在编辑器中显示帧率、内存和Object数目

 

锁定资源浏览器

点击右上方的按钮来锁定当前Content Browser。后续对美术资产进行Browse定位,会打开新的Content Browser。

 

锁定Details属性面板

 

资源搜索(Content Search)

Ctrl + P或点击菜单“File” -- “Open Asset...”

 

输入一个空格,来查看该文件夹下的所有文件

 

搜索含有ML_Plastic_Shiny_Beige字符串的物件   注:大小写不敏感

 

开头使用+来全字匹配搜索ML_Plastic_Shiny_Beige字符串的物件   注:大小写不敏感

 

Triangles>=10500  Type=SkeletalMesh

 

sRGB=True Type=Texture2D LODGroup=World

 

更多请参考:Advanced Search Syntax    高级搜索语法

 

显示C++类和引擎资产

 

Reload所选资源来放弃修改

 

拷贝资源路径

 

Copy Reference // 拷贝资源的引用路径

Material'/Game/Construction_VOL2/Materials/Masters/MM_MasterMaterial_01.MM_MasterMaterial_01'
StaticMesh'/Game/Construction_VOL2/Meshes/SM_PlywoodTable_01a.SM_PlywoodTable_01a'
StaticMesh'/Game/Downtown_West/Assets/props/prop_pots/SM_pot_a.SM_pot_a'
StaticMesh'/Game/Downtown_West/Assets/props/prop_pots/SM_pot_b.SM_pot_b'
Texture2D'/Game/Downtown_West/Assets/props/prop_pots/Textures/T_pots_albedo.T_pots_albedo'
MaterialInstanceConstant'/Game/Downtown_West/Assets/props/prop_table/MI_prop_table_a.MI_prop_table_a'
StaticMesh'/Game/Downtown_West/Assets/props/prop_table/SM_prop_dining_chair_a.SM_prop_dining_chair_a'
StaticMesh'/Game/Downtown_West/Assets/props/prop_table/SM_prop_dining_table_a.SM_prop_dining_table_a'
Texture2D'/Game/Downtown_West/Textures/Blends/T_blend_noise_a.T_blend_noise_a'
Texture2D'/Game/Downtown_West/Textures/Blends/T_blend_noise_b.T_blend_noise_b'
Texture2D'/Game/Downtown_West/Textures/Default/T_normal_default.T_normal_default'
Material'/Game/MS_Vegetables/Master_Materials/Standard_MasterMaterial.Standard_MasterMaterial'

注:可直接按Ctrl + C来拷贝

 

Copy File Path // 拷贝资源的文件路径

G:/svn/MyTest1/Content/Construction_VOL2/Materials/Masters/MM_MasterMaterial_01.uasset
G:/svn/MyTest1/Content/Construction_VOL2/Meshes/SM_PlywoodTable_01a.uasset
G:/svn/MyTest1/Content/Downtown_West/Assets/props/prop_pots/SM_pot_a.uasset
G:/svn/MyTest1/Content/Downtown_West/Assets/props/prop_pots/SM_pot_b.uasset
G:/svn/MyTest1/Content/Downtown_West/Assets/props/prop_pots/Textures/T_pots_albedo.uasset
G:/svn/MyTest1/Content/Downtown_West/Assets/props/prop_table/MI_prop_table_a.uasset
G:/svn/MyTest1/Content/Downtown_West/Assets/props/prop_table/SM_prop_dining_chair_a.uasset
G:/svn/MyTest1/Content/Downtown_West/Assets/props/prop_table/SM_prop_dining_table_a.uasset
G:/svn/MyTest1/Content/Downtown_West/Textures/Blends/T_blend_noise_a.uasset
G:/svn/MyTest1/Content/Downtown_West/Textures/Blends/T_blend_noise_b.uasset
G:/svn/MyTest1/Content/Downtown_West/Textures/Default/T_normal_default.uasset
G:/svn/MyTest1/Content/MS_Vegetables/Master_Materials/Standard_MasterMaterial.uasset

 

资源引用查看(Reference Viewer)

弹出Reference Viewer面板:

 

Copy Referenced Objects List   // 拷贝SM_prop_dining_chair_a静态模型依赖的资源

[/Game/Downtown_West/Assets/props/prop_table/SM_prop_dining_chair_a - Dependencies]
  [HARD]
    /Game/Downtown_West/Assets/props/prop_table/MI_prop_table_a.MI_prop_table_a
    /Script/NavigationSystem.NavigationSystem

 

Copy Referencing Objects List  // 拷贝引用SM_prop_dining_chair_a静态模型的资源

[/Game/Downtown_West/Assets/props/prop_table/SM_prop_dining_chair_a - Referencers]
  [HARD]
    /Game/Downtown_West/Maps/Demo_Environment.Demo_Environment
    /Game/Downtown_West/Maps/Asset_showcase.Asset_showcase
    /Game/MultiLevels/Furniture.Furniture

 

Show Referenced Objects List  // 显示SM_prop_dining_chair_a静态模型依赖的资源

 

Show Referencing Objects List  // 显示引用SM_prop_dining_chair_a静态模型的资源

 

Show Reference Tree  // 显示当前场景中引用该资源的对象的类型和名称

当前场景TestMultiLevelMap中引用该资源的对象的名称为SM_prop_dining_chair_a_2

 

更多请查看:引用查看器引用树工具 

 

保存资产

方式①:选中资源(可按Ctrl或Shift来多选),然后按Ctrl + S来保存所有选中里面处于modified状态的所有资源  注:无确认框

 

方式②:选中目录树上的文件夹(可按Ctrl或Shift来多选),然后按Ctrl + Shift + S递归子目录保存其中处于modified状态的所有资源  注:无确认框

 

方式③:选中文件夹(可按Ctrl或Shift来多选),然后按Ctrl + Shift + S递归子目录保存其中处于modified状态的所有资源   注:无确认框

 

方式④:Viewport为焦点窗口时,按Ctrl + S将保存当前关卡   注1:无确认框    注2:相当于点击工具栏的Save Current按钮  注3:相当于点击对应关卡的Save按钮  注4:相当于点击菜单File -- Save Current

 

方式⑤:点击菜单File -- Save All Levels来保存所有处于Modified的关卡地图  注:无确认框

 

方式⑥:Viewport为焦点窗口时,按Ctrl + Shift + S将保存所有处于Modified的资源和关卡地图   注1:无确认框  注2:相当于点击菜单File -- Save All

 

方式⑦:点击Save All会弹出确认框,来保存所有处于Modified的资源和关卡地图   注:有确认框

 

蓝图搜索

Blueprint(ParentClass=sguserwidget && Interfaces=unlua && Path=ui/pc/hud)  // 搜索父类名包含sguserwidget字符串、接口名包含unlua字符串、路径在ui/pc/hud下的蓝图文件

Blueprint(ParentClass=sguserwidget && Interfaces=unlua && Path=ui/pc/hud  && Variables(Name=newvar))  // 搜索父类名包含sguserwidget字符串、接口名包含unlua字符串、路径在ui/pc/hud下、变量名包含newvar字符串的蓝图文件

Variables(Name=newvar) // 搜索变量名包含newvar字符串的蓝图变量

Nodes(Name=camera || move)  // 搜索名称包含camera或move字符串的蓝图节点

Nodes(Name=camera or move) // 与上面命令等价

Nodes(Name=camera && move) // 搜索名称包含camera和move字符串的蓝图节点

Nodes(Name=camera and move)  // 与上面命令等价

Nodes(Name=camera move) // 与上面命令等价

Nodes(Comment=mesh switching) // 搜索备注包含mesh或switching字符串的蓝图节点

Nodes(Name=arealights && Pins(Name=row)) // 搜索名称包含arealights字符串且引脚名包含row字符串的蓝图节点

 

参考:蓝图搜索   Blueprint search

 

搜索蓝图节点

Ctrl + F,会弹出Find Results面板,输入“MaterialExpressionMaterialFunctionCall”,来搜索查找当前材质资源中的函数节点

 

选中一个蓝图函数,按Alt + Shift + F,会用该函数名在Find Results面板中进行搜索,可以搜索出所有用到该蓝图函数的地方

 

替换资源的引用

① NewWidgetBlueprint1蓝图引用的贴图是深灰色的

② 选中2张贴图(当前贴图和替换贴图),执行快捷菜单中的“Asset Actions” -- “Replace References”

③ 在弹出的对话框中,选择替换贴图

④ NewWidgetBlueprint1蓝图引用的贴图替换成了暗红色

 

参考:替换引用工具

 

删除时替换资源的引用

 

用矩阵查看和修改资源的属性

方法①:右键菜单点击“Asset Actions” -- “Bulk Edit via Property Matrix...”

 

方法②:也可以打开资源后,点击红框按钮用矩阵查看资源所有属性(与上面方法等价)

 

弹出的矩阵属性面板:

 

用矩阵查看和修改资源中组件的属性

 

弹出的矩阵属性面板:

 

参考:属性矩阵

 

用矩阵批量修改资源

 

方式①:通过右侧属性面板来修改Texture Group为UI类型

 

方式②:将对应属性Pin到左侧列表进行修改

选中该属性Cell,然后按Ctrl + C来拷贝该属性的值

 

选中列表中要修改行所在对应属性的Cell(可通过Ctrl来多选,或通过Shift来连选),然后按Ctrl + V来粘贴

 

将蓝图导出为文本

 

 

注:导出T3D和COPY格式,里面内容是一样的

ThirdPersonCharacter.T3D中的内容为:

Begin Object Class=/Script/Engine.Blueprint Name="ThirdPersonCharacter"
   Begin Object Class=/Script/Engine.EdGraph Name="EventGraph"
      Begin Object Class=/Script/BlueprintGraph.K2Node_Event Name="K2Node_Event_0"
      End Object
      Begin Object Class=/Script/BlueprintGraph.K2Node_Event Name="K2Node_Event_1"
      End Object
      Begin Object Class=/Script/BlueprintGraph.K2Node_Event Name="K2Node_Event_2"
      End Object
   End Object
   Begin Object Class=/Script/Engine.EdGraph Name="UserConstructionScript"
      Begin Object Class=/Script/BlueprintGraph.K2Node_FunctionEntry Name="K2Node_FunctionEntry_0"
      End Object
   End Object
   Begin Object Class=/Script/UnrealEd.SceneThumbnailInfo Name="SceneThumbnailInfo_0"
   End Object
   Begin Object Class=/Script/Engine.EdGraph Name="ReceiveBeginPlay"
      Begin Object Class=/Script/BlueprintGraph.K2Node_FunctionEntry Name="K2Node_FunctionEntry_0"
      End Object
      Begin Object Class=/Script/BlueprintGraph.K2Node_CallFunction Name="K2Node_CallFunction_0"
      End Object
   End Object
   Begin Object Name="EventGraph"
      Begin Object Name="K2Node_Event_0"
         EventReference=(MemberParent=Class'"/Script/Engine.Actor"',MemberName="ReceiveBeginPlay")
         bOverrideFunction=True
         bCommentBubblePinned=True
         NodeGuid=641371E6411FC9D89F0E5D8323049C98
         CustomProperties Pin (PinId=EAE8F3034FC01AF83136C48DCE1F4D73,PinName="OutputDelegate",Direction="EGPD_Output",PinType.PinCategory="delegate",PinType.PinSubCategory="",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(MemberParent=Class'"/Script/Engine.Actor"',MemberName="ReceiveBeginPlay"),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
         CustomProperties Pin (PinId=9CB66600479CAAE192CD17823296C033,PinName="then",Direction="EGPD_Output",PinType.PinCategory="exec",PinType.PinSubCategory="",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
      End Object
      Begin Object Name="K2Node_Event_1"
         EventReference=(MemberParent=Class'"/Script/Engine.Actor"',MemberName="ReceiveActorBeginOverlap")
         bOverrideFunction=True
         NodePosY=200
         EnabledState=Disabled
         bCommentBubblePinned=True
         bCommentBubbleVisible=True
         NodeComment="This node is disabled and will not be called.\nDrag off pins to build functionality."
         NodeGuid=E561D2DB4B7FED1CA67E47A35DA088DB
         CustomProperties Pin (PinId=F7A2080E4BD322CA0CE6FCA2CEF9ACC7,PinName="OutputDelegate",Direction="EGPD_Output",PinType.PinCategory="delegate",PinType.PinSubCategory="",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(MemberParent=Class'"/Script/Engine.Actor"',MemberName="ReceiveActorBeginOverlap"),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
         CustomProperties Pin (PinId=231B7DAF45C6FF400B1DA989A7C2BC60,PinName="then",Direction="EGPD_Output",PinType.PinCategory="exec",PinType.PinSubCategory="",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
         CustomProperties Pin (PinId=D7EAF2F74F6841CD84AAEB94A0F4B40F,PinName="OtherActor",PinToolTip="OtherActor\nActor Object Reference",Direction="EGPD_Output",PinType.PinCategory="object",PinType.PinSubCategory="",PinType.PinSubCategoryObject=Class'"/Script/Engine.Actor"',PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
      End Object
      Begin Object Name="K2Node_Event_2"
         EventReference=(MemberParent=Class'"/Script/Engine.Actor"',MemberName="ReceiveTick")
         bOverrideFunction=True
         NodePosY=400
         EnabledState=Disabled
         bCommentBubblePinned=True
         bCommentBubbleVisible=True
         NodeComment="This node is disabled and will not be called.\nDrag off pins to build functionality."
         NodeGuid=29BE42084C13A86EB82EE296C49102B1
         CustomProperties Pin (PinId=04966F014C66123CFDD67E916C145E2B,PinName="OutputDelegate",Direction="EGPD_Output",PinType.PinCategory="delegate",PinType.PinSubCategory="",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(MemberParent=Class'"/Script/Engine.Actor"',MemberName="ReceiveTick"),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
         CustomProperties Pin (PinId=57CD4DDA451FF709045C31B391062C3C,PinName="then",Direction="EGPD_Output",PinType.PinCategory="exec",PinType.PinSubCategory="",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
         CustomProperties Pin (PinId=9946649A476E0D4CC4C8249B9255A235,PinName="DeltaSeconds",PinToolTip="DeltaSeconds\nFloat",Direction="EGPD_Output",PinType.PinCategory="float",PinType.PinSubCategory="",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,DefaultValue="0.0",AutogeneratedDefaultValue="0.0",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
      End Object
      Schema=Class'"/Script/BlueprintGraph.EdGraphSchema_K2"'
      Nodes(0)=K2Node_Event'"K2Node_Event_0"'
      Nodes(1)=K2Node_Event'"K2Node_Event_1"'
      Nodes(2)=K2Node_Event'"K2Node_Event_2"'
      bAllowDeletion=False
      GraphGuid=4F9AAA774069B48A3C5F24BFAB00D15D
   End Object
   Begin Object Name="UserConstructionScript"
      Begin Object Name="K2Node_FunctionEntry_0"
         FunctionReference=(MemberParent=Class'"/Script/Engine.Actor"',MemberName="UserConstructionScript")
         NodeGuid=BC49EA5242C8635EC9D5238E06CEC6B6
         CustomProperties Pin (PinId=9EB06462436AAC0D6904D1BAC10B55FF,PinName="then",Direction="EGPD_Output",PinType.PinCategory="exec",PinType.PinSubCategory="",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
      End Object
      Schema=Class'"/Script/BlueprintGraph.EdGraphSchema_K2"'
      Nodes(0)=K2Node_FunctionEntry'"K2Node_FunctionEntry_0"'
      bAllowDeletion=False
      GraphGuid=24E95FCD44385987EF39B79A744CD417
   End Object
   Begin Object Name="SceneThumbnailInfo_0"
   End Object
   Begin Object Name="ReceiveBeginPlay"
      Begin Object Name="K2Node_FunctionEntry_0"
         CustomGeneratedFunctionName="ReceiveBeginPlay"
         FunctionReference=(MemberParent=Class'"/Script/Engine.Actor"',MemberName="ReceiveBeginPlay")
         NodePosX=-200
         NodePosY=-2000
         NodeGuid=59632E4E46A3C511F7CCE78C0BD2BF46
         CustomProperties Pin (PinId=9A2CEE3D41D84E4E1CFAAAAA29AB0C02,PinName="then",Direction="EGPD_Output",PinType.PinCategory="exec",PinType.PinSubCategory="",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,LinkedTo=(K2Node_CallFunction_0 2496E2FE4529698C44A4BA8A6C2DBF54,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
      End Object
      Begin Object Name="K2Node_CallFunction_0"
         FunctionReference=(MemberName="ExecuteUbergraph_ThirdPersonCharacter",bSelfContext=True)
         NodePosX=300
         NodePosY=-2000
         NodeGuid=00602C7E488FB5D172B6DFAE607334D2
         CustomProperties Pin (PinId=2496E2FE4529698C44A4BA8A6C2DBF54,PinName="execute",PinType.PinCategory="exec",PinType.PinSubCategory="",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,LinkedTo=(K2Node_FunctionEntry_0 9A2CEE3D41D84E4E1CFAAAAA29AB0C02,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
         CustomProperties Pin (PinId=76EADF0E4233566F5B7F58A8101D57B6,PinName="then",Direction="EGPD_Output",PinType.PinCategory="exec",PinType.PinSubCategory="",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
         CustomProperties Pin (PinId=CBA4676740805CE6BC3B4F934376F5BA,PinName="self",PinFriendlyName=NSLOCTEXT("K2Node", "Target", "Target"),PinType.PinCategory="object",PinType.PinSubCategory="self",PinType.PinSubCategoryObject=BlueprintGeneratedClass'"/Game/ThirdPersonCPP/Blueprints/ThirdPersonCharacter.SKEL_ThirdPersonCharacter_C"',PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
         CustomProperties Pin (PinId=0880C02B4F383978C1826D8610B7E717,PinName="EntryPoint",PinType.PinCategory="int",PinType.PinSubCategory="",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,DefaultValue="0",AutogeneratedDefaultValue="0",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
      End Object
      Schema=Class'"/Script/BlueprintGraph.EdGraphSchema_K2"'
      Nodes(0)=K2Node_FunctionEntry'"K2Node_FunctionEntry_0"'
      Nodes(1)=K2Node_CallFunction'"K2Node_CallFunction_0"'
      GraphGuid=1986B27F40E95F22A67813A76F195842
   End Object
   ParentClass=Class'"/Script/MyTest1.MyTest1Character"'
   BlueprintSystemVersion=2
   SimpleConstructionScript=SimpleConstructionScript'"ThirdPersonCharacter_C:SimpleConstructionScript_0"'
   UbergraphPages(0)=EdGraph'"EventGraph"'
   FunctionGraphs(0)=EdGraph'"UserConstructionScript"'
   NewVariables(0)=(VarName="NewVar_0",VarGuid=C28BDBE84E778C3C1B1B348917E76AAC,VarType=(PinCategory="object",PinSubCategoryObject=Class'"/Script/Engine.Actor"'),FriendlyName="New Var 0",Category=NSLOCTEXT("KismetSchema", "Default", "Default"),PropertyFlags=67589,MetaDataArray=((DataKey="MultiLine",DataValue="true")))
   CategorySorting(0)=""
   CategorySorting(1)="Event Graph"
   CategorySorting(2)="Default"
   LastEditedDocuments(0)=(EditedObjectPath=/Game/ThirdPersonCPP/Blueprints/ThirdPersonCharacter.ThirdPersonCharacter:UserConstructionScript,SavedZoomAmount=1.000000)
   LastEditedDocuments(1)=(EditedObjectPath=/Game/ThirdPersonCPP/Blueprints/ThirdPersonCharacter.ThirdPersonCharacter:EventGraph,SavedViewOffset=(X=38.160797,Y=-393.479980),SavedZoomAmount=1.000000)
   ThumbnailInfo=SceneThumbnailInfo'"SceneThumbnailInfo_0"'
   GeneratedClass=BlueprintGeneratedClass'"ThirdPersonCharacter_C"'
   bLegacyNeedToPurgeSkelRefs=False
   BlueprintGuid=5DCFAE1D4F06414EF80F6A88D76A91D0
End Object

 

将StaticMesh转换为SkeletalMesh

① 将StaticMesh导出到fbx文件

② 再将fbx文件导回编辑器

 

将SkeletalMesh转换为StaticMesh

 

使用MeshEdge查看模型表面三角形

使用Show>Advanced>MeshEdge 来取代线框模式(Wireframe)

 

使用Quad Overdraw查看模型表面三角形

 

保持物理模拟后的位置

 

然后点击Simulate运行场景(SIE,Simulate In Editor)。注:不要选择Selected Viewport来Play,这种方式镜头会动。

 

Simulate运行之后,物理模拟会将箱子重力跌落。

 

选中这些箱子,然后右键菜单执行Keep Simulation Changes,执行后即使结束运行时,这些箱子仍然会留在地上。 详见:保留模拟修改

 

保存视角并快速转到视角

使用Ctrl+[0-9]保存视角,使用[0-9]跳跃到那个视角

 

调整相机速度

 

缩略图编辑

首先,勾选Thumbnail Edit Mode,开启缩略图编辑模式

然后在目标图标上,通过拖曳左键旋转图标,拖曳右键缩放图标

 

最后,点击Done Editing来结束编辑模式。

 

场景中的物件均为Actor类型

未运行的场景:

 

运行起来的场景:

 

注:黄色字眼的物体为运行时动态创建的Actor

 

Actor类型继承树:

Object (48)
  。。。 。。。
  Actor (752)
    NavigationData (1328)
      AbstractNavData (1328)
      NavigationGraph (1328)
      RecastNavMesh (1504)
    NavigationGraphNode (752)
    NavigationTestingActor (1032)
    Brush (816)
      Volume (816)
        NavMeshBoundsVolume (824)
        NavModifierVolume (840)
        HierarchicalLODVolume (824)
        ProceduralFoliageBlockingVolume (824)
        ProceduralFoliageVolume (824)
        AudioVolume (928)
        BlockingVolume (816)
        CameraBlockingVolume (816)
        CullDistanceVolume (840)
        PhysicsVolume (832)
          DefaultPhysicsVolume (832)
          KillZVolume (832)
          PainCausingVolume (872)
        LevelStreamingVolume (840)
        LightmassCharacterIndirectDetailVolume (816)
        LightmassImportanceVolume (816)
        MeshMergeCullingVolume (816)
        PostProcessVolume (2256)
        PrecomputedVisibilityOverrideVolume (864)
        PrecomputedVisibilityVolume (816)
        TriggerVolume (816)
        VolumetricLightmapDensityVolume (824)
      BrushShape (816)
    NavSystemConfigOverride (776)
    InternalToolFrameworkActor (752)
      GizmoActor (752)
        IntervalGizmoActor (776)
        TransformGizmoActor (880)
    SequenceRecorderGroup (768)
    SequencerKeyActor (784)
    SequencerMeshTrail (816)
    ARActor (752)
    AROriginActor (752)
      LuminAROrigin (944)
    Info (760)
      GameModeBase (920)
        GameMode (1000)
          ARSharedWorldGameMode (1104)
          MagicLeapSharedWorldGameMode (1208)
        FunctionalTestGameMode (920)
        MyTest1GameMode (920)
      GameStateBase (840)
        GameState (880)
          ARSharedWorldGameState (936)
          MagicLeapSharedWorldGameState (944)
      SkyLight (776)
        ARSkyLight (792)
      AtmosphericFog (776)
      ExponentialHeightFog (776)
      GameNetworkManager (936)
      GameSession (792)
      PlayerState (1024)
      ServerStatReplicator (960)
      SkyAtmosphere (776)
      VolumetricCloud (768)
      WindDirectionalSource (776)
      WorldSettings (1424)
    Controller (880)
      PlayerController (1624)
        ARSharedWorldPlayerController (1632)
        DebugCameraController (1896)
          VisualLoggerCameraController (1936)
        MagicLeapSharedWorldPlayerController (1648)
      AIController (1024)
        DetourCrowdAIController (1024)
        GridPathAIController (1024)
    VREditorAvatarActor (864)
    VREditorBaseActor (992)
      VREditorFloatingUI (1216)
        VREditorDockableWindow (1328)
          VREditorDockableCameraWindow (1328)
        VREditorFloatingCameraUI (1232)
      VREditorRadialFloatingUI (1168)
    FloatingText (824)
    VREditorTeleporter (880)
    BaseTransformGizmo (800)
      PivotTransformGizmo (864)
    CameraRig_Crane (832)
    CameraRig_Rail (832)
    CameraActor (2208)
      CineCameraActor (2320)
      EditorUtilityCamera (2208)
    LevelSequenceActor (888)
    LevelSequenceMediaController (792)
    GroupActor (792)
    SkeletalMeshActor (888)
      AnimationThumbnailSkeletalMeshActor (888)
    InstancedFoliageActor (1392)
    StaticMeshActor (768)
      InteractiveFoliageActor (864)
    ControlPointMeshActor (760)
    LandscapeProxy (2112)
      Landscape (2456)
      LandscapeStreamingProxy (2144)
    LandscapeBlueprintBrushBase (792)
      LandscapeBlueprintBrush (792)
    LandscapeGizmoActor (792)
      LandscapeGizmoActiveActor (1104)
    LandscapeMeshProxyActor (760)
    AmbientSound (760)
    BandwidthTestActor (784)
    ReflectionCapture (776)
      BoxReflectionCapture (776)
      PlaneReflectionCapture (776)
      SphereReflectionCapture (784)
    CameraShakeSourceActor (760)
    Pawn (848)
      Character (1424)
        EQSTestingPawn (1584)
        PaperCharacter (1424)
        MyTest1Character (1936)
          ThirdPersonCharacter_C (1960)
          SKEL_ThirdPersonCharacter_C (1960)
        ArchVisCharacter (1520)
      DefaultPawn (888)
        SpectatorPawn (888)
      WheeledVehicle (864)
    HUD (992)
      DebugCameraHUD (992)
        VisualLoggerHUD (1032)
    DecalActor (784)
    Light (768)
      DirectionalLight (784)
      SpotLight (784)
        GeneratedMeshAreaLight (784)
      PointLight (776)
      RectLight (776)
    DocumentationActor (784)
    Emitter (848)
      EmitterCameraLensEffectBase (960)
    LevelBounds (800)
    LevelScriptActor (760)
      FunctionalTestLevelScript (760)
      SKEL_ThirdPersonExampleMap_C (776)
      ThirdPersonExampleMap_C (776)
    LightmassPortal (768)
    LODActor (1112)
    MaterialInstanceActor (776)
    MatineeActor (1096)
      MatineeActorCameraAnim (1104)
    NavigationObjectBase (792)
      PlayerStart (816)
        PlayerStartPIE (816)
    Note (784)
    ParticleEventManager (752)
    RigidBodyBase (752)
      PhysicsConstraintActor (784)
      PhysicsThruster (768)
      RadialForceActor (768)
    SceneCapture (768)
      PlanarReflection (792)
      SceneCapture2D (776)
        OculusMR_CastingCameraActor (1008)
      SceneCaptureCube (776)
    PlayerCameraManager (10656)
    RuntimeVirtualTextureVolume (768)
    SplineMeshActor (760)
    TargetPoint (768)
    TextRenderActor (768)
    TriggerBase (768)
      TriggerBox (768)
      TriggerCapsule (768)
      TriggerSphere (768)
    VectorFieldVolume (768)
    GameplayDebuggerCategoryReplicator (880)
    GameplayDebuggerPlayerManager (792)
    NavLinkProxy (848)
    LevelVariantSetsActor (784)
    SwitchActor (792)
    DatasmithAreaLightActor (840)
    DatasmithImportedSequencesActor (768)
    DatasmithSceneActor (848)
    OnlineBeacon (808)
      OnlineBeaconClient (904)
        PartyBeaconClient (1096)
        SpectatorBeaconClient (1136)
        TestBeaconClient (904)
      OnlineBeaconHost (992)
    OnlineBeaconHostObject (792)
      PartyBeaconHost (912)
      SpectatorBeaconHost (912)
      TestBeaconHost (792)
    Manipulator (776)
    FunctionalTest (1056)
      FunctionalAITest (1208)
      ScreenshotFunctionalTestBase (1176)
        FunctionalUIScreenshotTest (1208)
        ScreenshotFunctionalTest (1184)
    PhasedAutomationActorBase (752)
    PaperFlipbookActor (760)
    PaperGroupedSpriteActor (760)
    PaperSpriteActor (760)
    PaperTerrainActor (776)
    PaperTileMapActor (760)
    EditorUtilityActor (752)
    PlacedEditorUtilityBase (768)
    NiagaraActor (784)
    NiagaraPreviewBase (752)
    NiagaraPreviewGrid (848)
    MagicLeapARPinInfoActorBase (776)
      MagicLeapARPinInfoActor_C (924)
      SKEL_MagicLeapARPinInfoActor_C (924)
    MagicLeapARPinRenderer (856)
    MyActor (760)
      MyBlueprintActor_C (768)
      SKEL_MyBlueprintActor_C (784)
      REINST_MyBlueprintActor_C_25 (768)
    GeometryCacheActor (760)
    ChaosSolverActor (1024)
    FieldSystemActor (760)
    GeometryCollectionActor (768)
    GeometryCollectionDebugDrawActor (984)
    GeometryCollectionRenderLevelSetActor (912)
    VariantManagerTestActor (976)
    TemplateSequenceActor (840)
    CableActor (760)
    AnimationEditorPreviewActor (752)
    VisualLoggerRenderingActor (1016)
    LandscapePlaceholder (752)
    BP_Sky_Sphere_C (912)
    SKEL_BP_Sky_Sphere_C (928)
    RenderToTextureMacros_C (752)
    SKEL_RenderToTextureMacros_C (752)
    REINST_RenderToTextureMacros_C_15 (752)
    ActorMacros_C (752)
    SKEL_ActorMacros_C (752)
    REINST_ActorMacros_C_17 (752)
    PROTO_BP_Blueprint_0_C (760)
    SKEL_PROTO_BP_Blueprint_0_C (776)
  。。。 。。。

 

分屏(SplitScreen)游戏制作(本地多人游戏)

(1) 项目设置中开启Local Multiplayer的SplitScreen模式

 

(2) 创建第二个LocalPlayer,并在场景中放置2个将被受控的Character

游戏启动会创建第一个角色,给一号玩家控制器使用。这就是单人单机游戏。

如果你想添加本地玩家,则需要在主关卡蓝图中使用CreatePlayer节点在本地添加新的玩家,并使用标准流程构建被控制的角色,添加到场景中。

 

注1:Controller Id 指定新加入的玩家的ID索引值,-1则按照递增的方式自动生成索引。

注2:Return Value返回生成的新的玩家控制器PlayerController

 

 

 

(3) Play之后,就是一个分屏的本地双人游戏

 

更多请参考:UE4中分屏游戏制作(本地多人游戏 SplitScreen)

 

参考

编辑器视口

内容浏览器

posted on 2021-09-07 21:13  可可西  阅读(1914)  评论(0编辑  收藏  举报

导航