-
Notifications
You must be signed in to change notification settings - Fork 29
UMG Event
xg_55 edited this page Nov 8, 2016
·
1 revision
Copyed from Demo project
namespace Game
{
/// <summary>
/// Main Scene UI
/// </summary>
public class MainUI:UnrealEngine.UMonoActorComponent
{
public TSubclassOf<UUserWidget> MainWidget;
APlayerController PC;
UUserWidget widget;
public static MainUI Instance;
public MainUI()
{
Instance = this;
}
/// <summary>
/// called on register
/// </summary>
void OnRegister()
{
Instance = this;
}
/// <summary>
/// called on unregister
/// </summary>
void OnUnRegister()
{
Instance = null;
}
/// <summary>
/// called on begin play
/// </summary>
void BeginPlay()
{
//Show UI
_Open();
}
/// <summary>
/// Called On End Play
/// </summary>
void OnDestroy()
{
Instance = null;
}
void Init()
{
if (widget != null)
return;
PC = UGameplayStatics.GetPlayerController(GetWorld(), 0);
widget = UWidgetBlueprintLibrary.Create(this, MainWidget, PC);
//bind start game button event
{
UButton BtnStart = widget.WidgetTree.FindWidget<UButton>("Button_Start");
FMulticastScriptDelegate OnClick = BtnStart.OnClicked;
OnClick.Add(this, "OnClickStart");
BtnStart.OnClicked = OnClick;
}
//bind quit game button event
{
UButton BtnStart = widget.WidgetTree.FindWidget<UButton>("Button_Quit");
FMulticastScriptDelegate OnClick = BtnStart.OnClicked;
OnClick.Add(this, "OnClickQuit");
BtnStart.OnClicked = OnClick;
}
}
/// <summary>
/// This Must be Public for export to blueprint
/// </summary>
public void OnClickStart()
{
LogInfo("ClickStart");
UGameplayStatics.LoadStreamLevel(this, "ThirdPersonExampleMap", true, true, new FLatentActionInfo());
ULevelStreaming LvStreaming = UGameplayStatics.GetStreamingLevel(this, "ThirdPersonExampleMap");
FMulticastScriptDelegate Del = LvStreaming.OnLevelLoaded;
Del.Add(Engine.Instance, "OnThirdPersonExampleMapShown");
LvStreaming.OnLevelShown = Del;
//Close UI
_Close();
//Unload UI Level
UGameplayStatics.UnloadStreamLevel(this, "UI", new FLatentActionInfo());
}
/// <summary>
/// This Must be Public for export to blueprint
/// </summary>
public void OnClickQuit()
{
LogInfo("OnClickQuit");
_Close();
UKismetSystemLibrary.QuitGame(GetWorld(), PC, EQuitPreference.Quit);
}
void _Close()
{
if (widget != null)
{
widget.RemoveFromParent();
}
PC.bShowMouseCursor = false;
UWidgetBlueprintLibrary.SetInputMode_GameOnly(PC);
}
void _Open()
{
if (widget == null)
{
Init();
}
widget.AddToViewport();
PC.bShowMouseCursor = true;
UWidgetBlueprintLibrary.SetInputMode_UIOnlyEx(PC, widget);
}
}
}