拍照模式¶
警告
在 Unreal Engine 5.5 Shipping 构建 中,由于引擎的一个 bug,截图将无法正确捕获。这不会影响其他任何 UE 版本;但如果你使用的是 UE5.5,需要将全局配置中的截图捕获方式(Screenshot Capture Method)改为 Render Target。如果你不打算在 Shipping 构建中启用拍照模式,可以使用 High Resolution Capture Method 以获得更高画质。
使用 Demo 玩家控制器设置拍照模式¶
如果你使用的是提供的 BP_EGUI_DemoPlayerController,那么拍照模式所需的一切都已配置好。默认情况下,你可以通过暂停菜单或游戏中的以下按键打开拍照模式

为自定义玩家控制器设置拍照模式¶
-
在你包含角色所有主要输入的
Input Mapping Context中,使用IA_TogglePhotoMode设置一个用于打开拍照模式的输入你可以随意使用任何按键,此设置示例可在
EasyGameUI/DemoContent/Inputs/IMC_MainGameInputs中找到 -
完成后,在你的玩家控制器中添加
IA_TogglePhotoMode输入操作事件 -
然后,使用
Get HUD函数获取 HUD Class 引用 -
然后,从 HUD 引用调用
Open Photo Mode函数 -
最后,将其连接到输入操作事件的
Started引脚
请注意,默认情况下某些版本中只显示Triggered引脚,你需要点击输入事件节点底部的箭头才能显示Started引脚 -
如果你希望在拍照模式打开/关闭时添加任何逻辑,可以使用提供的事件
Photo Mode Closed,用法如下:以下是这些节点的代码:
Begin Object Class=/Script/BlueprintGraph.K2Node_CallFunction Name="K2Node_CallFunction_4" ExportPath="/Script/BlueprintGraph.K2Node_CallFunction'/Game/EasyGameUI/DemoContent/BP_EGUI_DemoPlayerController.BP_EGUI_DemoPlayerController:EventGraph.K2Node_CallFunction_4'" bIsPureFunc=True bIsConstFunc=True FunctionReference=(MemberName="GetHUD",bSelfContext=True) NodePosX=1440 NodePosY=416 NodeGuid=E9276AD3487B45CC0BB7819EBBD60B6A CustomProperties Pin (PinId=74002A114D273125AD067D9A2755C44E,PinName="self",PinFriendlyName=NSLOCTEXT("K2Node", "Target", "Target"),PinToolTip="Target\nPlayer Controller Object Reference",PinType.PinCategory="object",PinType.PinSubCategory="",PinType.PinSubCategoryObject="/Script/CoreUObject.Class'/Script/Engine.PlayerController'",PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) CustomProperties Pin (PinId=EE7CA1FC4D484CA190A79C9FE565F34F,PinName="ReturnValue",PinToolTip="Return Value\nHUD Object Reference\n\nGets the HUD currently being used by this player controller",Direction="EGPD_Output",PinType.PinCategory="object",PinType.PinSubCategory="",PinType.PinSubCategoryObject="/Script/CoreUObject.Class'/Script/Engine.HUD'",PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,LinkedTo=(K2Node_Message_3 477908274E18DFBB556103BB3AC8D3C5,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) End Object Begin Object Class=/Script/BlueprintGraph.K2Node_Message Name="K2Node_Message_3" ExportPath="/Script/BlueprintGraph.K2Node_Message'/Game/EasyGameUI/DemoContent/BP_EGUI_DemoPlayerController.BP_EGUI_DemoPlayerController:EventGraph.K2Node_Message_3'" bIsInterfaceCall=True FunctionReference=(MemberParent="/Script/Engine.BlueprintGeneratedClass'/Game/EasyGameUI/Core/Utilities/BPI_EGUI_HUDInterface.BPI_EGUI_HUDInterface_C'",MemberName="OpenPhotoMode",MemberGuid=3AECC1DD4CF823E0E06536A7A8572CEA) NodePosX=1712 NodePosY=384 NodeGuid=F3D1CB6A4E41C97EB04734846F6975F3 CustomProperties Pin (PinId=B66AE6C74CF9599AA136968D3A6EC632,PinName="execute",PinToolTip="\nExec",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,PinType.bSerializeAsSinglePrecisionFloat=False,LinkedTo=(K2Node_EnhancedInputAction_2 01CE738041AAF37455DC11B152FEE45A,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) CustomProperties Pin (PinId=E601B0054100F914003F1083AE2DF3EC,PinName="then",PinToolTip="\nExec",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,PinType.bSerializeAsSinglePrecisionFloat=False,LinkedTo=(K2Node_AddDelegate_0 0F0A981F41B67C91BEF125BB56C3C981,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) CustomProperties Pin (PinId=477908274E18DFBB556103BB3AC8D3C5,PinName="self",PinFriendlyName=NSLOCTEXT("K2Node", "Target", "Target"),PinToolTip="Target\nObject Reference",PinType.PinCategory="object",PinType.PinSubCategory="",PinType.PinSubCategoryObject="/Script/CoreUObject.Class'/Script/CoreUObject.Object'",PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,LinkedTo=(K2Node_CallFunction_4 EE7CA1FC4D484CA190A79C9FE565F34F,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=True,bAdvancedView=False,bOrphanedPin=False,) CustomProperties Pin (PinId=711F06404659461732C9F1B74C420A96,PinName="PhotoModeController",PinToolTip="Photo Mode Controller\nBP EPM Photo Mode Controller Object Reference",Direction="EGPD_Output",PinType.PinCategory="object",PinType.PinSubCategory="",PinType.PinSubCategoryObject="/Script/Engine.BlueprintGeneratedClass'/Game/EasyGameUI/EasyPhotoMode/Core/BP_EPM_PhotoModeController.BP_EPM_PhotoModeController_C'",PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,LinkedTo=(K2Node_AddDelegate_0 7FE29B2A4515B11C128BDB9221AD54EE,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) End Object Begin Object Class=/Script/BlueprintGraph.K2Node_AddDelegate Name="K2Node_AddDelegate_0" ExportPath="/Script/BlueprintGraph.K2Node_AddDelegate'/Game/EasyGameUI/DemoContent/BP_EGUI_DemoPlayerController.BP_EGUI_DemoPlayerController:EventGraph.K2Node_AddDelegate_0'" DelegateReference=(MemberParent="/Script/Engine.BlueprintGeneratedClass'/Game/EasyGameUI/EasyPhotoMode/Core/BP_EPM_PhotoModeController.BP_EPM_PhotoModeController_C'",MemberName="PhotoModeClosed",MemberGuid=AC57F2E3420CFE9CB1927CA354448783) NodePosX=1968 NodePosY=368 NodeGuid=DDCD2A4740181C09DB127D9F85B542EE CustomProperties Pin (PinId=0F0A981F41B67C91BEF125BB56C3C981,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,PinType.bSerializeAsSinglePrecisionFloat=False,LinkedTo=(K2Node_Message_3 E601B0054100F914003F1083AE2DF3EC,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) CustomProperties Pin (PinId=9522373B492F391B01042187B21097D0,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,PinType.bSerializeAsSinglePrecisionFloat=False,LinkedTo=(K2Node_Knot_2 3ACF92F7420FA5CCDDC5BB975E56E86B,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) CustomProperties Pin (PinId=7FE29B2A4515B11C128BDB9221AD54EE,PinName="self",PinFriendlyName=NSLOCTEXT("K2Node", "BaseMCDelegateSelfPinName", "Target"),PinType.PinCategory="object",PinType.PinSubCategory="",PinType.PinSubCategoryObject="/Script/Engine.BlueprintGeneratedClass'/Game/EasyGameUI/EasyPhotoMode/Core/BP_EPM_PhotoModeController.BP_EPM_PhotoModeController_C'",PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,LinkedTo=(K2Node_Message_3 711F06404659461732C9F1B74C420A96,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) CustomProperties Pin (PinId=2F65F4BF4B047067360A72BAD9D40EFF,PinName="Delegate",PinFriendlyName=NSLOCTEXT("K2Node", "PinFriendlyDelegatetName", "Event"),PinType.PinCategory="delegate",PinType.PinSubCategory="",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(MemberParent="/Script/Engine.BlueprintGeneratedClass'/Game/EasyGameUI/EasyPhotoMode/Core/BP_EPM_PhotoModeController.BP_EPM_PhotoModeController_C'",MemberName="PhotoModeClosed__DelegateSignature",MemberGuid=528D13314C06F9B02F89FAB6BD1B41B3),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=True,PinType.bIsConst=True,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,LinkedTo=(K2Node_CustomEvent_0 788529BF4570541EC1B4C29926E2F85A,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) End Object Begin Object Class=/Script/BlueprintGraph.K2Node_CustomEvent Name="K2Node_CustomEvent_0" ExportPath="/Script/BlueprintGraph.K2Node_CustomEvent'/Game/EasyGameUI/DemoContent/BP_EGUI_DemoPlayerController.BP_EGUI_DemoPlayerController:EventGraph.K2Node_CustomEvent_0'" CustomFunctionName="PhotoModeClosed" NodePosX=1760 NodePosY=509 NodeGuid=46F4790247865A9E744D34999387766C CustomProperties Pin (PinId=788529BF4570541EC1B4C29926E2F85A,PinName="OutputDelegate",Direction="EGPD_Output",PinType.PinCategory="delegate",PinType.PinSubCategory="",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(MemberParent="/Script/Engine.BlueprintGeneratedClass'/Game/EasyGameUI/DemoContent/BP_EGUI_DemoPlayerController.BP_EGUI_DemoPlayerController_C'",MemberName="PhotoModeClosed",MemberGuid=46F4790247865A9E744D34999387766C),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,LinkedTo=(K2Node_AddDelegate_0 2F65F4BF4B047067360A72BAD9D40EFF,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) CustomProperties Pin (PinId=BFB6F4174CD29AD50323CE8E0707FB56,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,PinType.bSerializeAsSinglePrecisionFloat=False,LinkedTo=(K2Node_Knot_3 3ACF92F7420FA5CCDDC5BB975E56E86B,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) End Object Begin Object Class=/Script/BlueprintGraph.K2Node_Knot Name="K2Node_Knot_2" ExportPath="/Script/BlueprintGraph.K2Node_Knot'/Game/EasyGameUI/DemoContent/BP_EGUI_DemoPlayerController.BP_EGUI_DemoPlayerController:EventGraph.K2Node_Knot_2'" NodePosX=2272 NodePosY=400 bCommentBubbleVisible=True NodeComment="Code on Open" NodeGuid=9954F9214087CE221E2A57849A5460B9 CustomProperties Pin (PinId=3ACF92F7420FA5CCDDC5BB975E56E86B,PinName="InputPin",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,PinType.bSerializeAsSinglePrecisionFloat=False,LinkedTo=(K2Node_AddDelegate_0 9522373B492F391B01042187B21097D0,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=True,bAdvancedView=False,bOrphanedPin=False,) CustomProperties Pin (PinId=769E1568436D427C4186198B8CCE214B,PinName="OutputPin",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,PinType.bSerializeAsSinglePrecisionFloat=False,PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) End Object Begin Object Class=/Script/BlueprintGraph.K2Node_Knot Name="K2Node_Knot_3" ExportPath="/Script/BlueprintGraph.K2Node_Knot'/Game/EasyGameUI/DemoContent/BP_EGUI_DemoPlayerController.BP_EGUI_DemoPlayerController:EventGraph.K2Node_Knot_3'" NodePosX=2272 NodePosY=560 bCommentBubbleVisible=True NodeComment="Code on Close" NodeGuid=11D301B94B912B6F2017B48920426924 CustomProperties Pin (PinId=3ACF92F7420FA5CCDDC5BB975E56E86B,PinName="InputPin",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,PinType.bSerializeAsSinglePrecisionFloat=False,LinkedTo=(K2Node_CustomEvent_0 BFB6F4174CD29AD50323CE8E0707FB56,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=True,bAdvancedView=False,bOrphanedPin=False,) CustomProperties Pin (PinId=769E1568436D427C4186198B8CCE214B,PinName="OutputPin",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,PinType.bSerializeAsSinglePrecisionFloat=False,PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) End Object
信息
图库(Gallery)UI 可直接从拍照模式系统访问,无需任何实现。
附加工具¶
在 EasyGameUI/EasyPhotoMode/Core/VolumeBlueprints 文件夹中,你会找到几个在设置拍照模式时可能有用的蓝图
-
BP_EPM_CameraBlockingVolume放置在世界中后,此阻挡体积会阻止拍照模式的摄像机越过边界,充当一堵隐形墙,可用于封锁一些禁止进入的区域。
你只需将其放置在你的世界中,并在所需位置缩放即可。
该阻挡体积仅在玩家打开拍照模式时启用,因此无需担心它会影响正常游戏玩法
-
BP_EPM_PhotoModeDisablerVolume此体积可用于在特定区域阻止拍照模式的激活。比如你不想让玩家在房屋内或首领战场中打开拍照模式,只需放置此体积覆盖被封锁的区域即可!






