Photo Mode¶
Warning
In Unreal Engine 5.5 Shipping builds screenshots will not be captured properly due to an engine bug, this does not affect any other UE versions but if you are using UE5.5, you need to change the Screenshot Capture Method in the Global Config to Render Target, you can use the High Resolution Capture Method for higher quality if you don’t plan on enabling the photo mode in shipping builds.
Photo Mode Setup with the Demo Player Controller¶
If you are using the provided BP_EGUI_DemoPlayerController, everything is already set up for the photo mode, by default you can open the photo mode through the pause menu or with the following inputs in game

Photo Mode Setup for custom Player Controller¶
-
Inside your
Input Mapping Contextcontaining all the main inputs of your character, setup an input to open the Photo Mode using theIA_TogglePhotoModeFeel free to use any keys you want, you can find this setup example inside
EasyGameUI/DemoContent/Inputs/IMC_MainGameInputs -
Once done, inside your Player Controller, add the
IA_TogglePhotoModeinput action event -
Then, retrieve the HUD Class reference with the
Get HUDfunction -
Then from the HUD reference, call the
Open Photo Modefunction -
Finally, link it to the
Startedpin of your input action event
Be careful, by default only theTriggeredpin is visible in some versions, you need to click on the arrow at the bottom of the input event node to display theStartedpin -
If you wish to add any logic when the photo mode is opened/closed, you can do so with the provided event
Photo Mode Closed, you can use it with the following setup:Here is the code for these nodes:
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
Info
The Gallery UI is accesible directly from the Photo Mode system, no implementation is required.
Additional Utilities¶
Inside the EasyGameUI/EasyPhotoMode/Core/VolumeBlueprints folder you will find several blueprints that can be useful when setting up the Photo Mode
-
BP_EPM_CameraBlockingVolumeWhen placed in the world, this blocking volume will prevent the camera of the photo mode to go beyond, acting as an invisible wall which can be useful to block off some areas that would be off-limits.
You just have to place it down and in your world and scale it in the wanted location.
The blocking volume will only be enabled when the photo mode is opened by the player so you don’t have to worry about it affecting normal gameplay
-
BP_EPM_PhotoModeDisablerVolumeThis volume can allow to block the activation of the photo mode in select areas, let’s say you don’t want the player to be able to open the photo mode while in a house or in a boss arena, then just place this volume to cover the blocked are and it’s done!






