转自:https://www.cnblogs.com/kadaj/p/6412937.html

1.创建关卡类

  1.创建C++类继承LevelScriptActor

  2.打开关卡蓝图 Class Settings->Parent Class 选择你之前创建好的C++类

  遇到的问题:

  1.Tick()不运行 解决方法:BeginPlay() 增加Super::BeginPlay();

2.在主关卡类里面创建UMG

  1.创建C++类继承UUserWidget,例如:UMyUserWidget;

  2.获取PlayerController,方法:GetWorld()->GetFirstPlayerController();

  3.获取UMG蓝图,方法:UClass* widget = LoadClass<UUserWidget>(nullptr,TEXT("/Game/文件名.文件名_C"));

  4.在关卡里面创建UMG,方法:UMyUserWidget* mainUMG = CreateWidget<UMyUserWidget>(GetWorld()->GetFirstPlayerController(),widget); mainUMG->AddToViewport();

  遇到问题:

  1.路径名一定要加_C;

  2.AddToViewport(参数);参数可以调整UMG之间的层级

3.UMG里面控件的使用

  1.获取最外层界面控件,方法:UPanelWidget *RootWidget = Cast<UPanelWidget>(GetRootWidget());

  2.获取里面的控件,方法:Utype* t= (Utype*)GetWidgetFromName(TEXT("控件在UMG蓝图里面的名字"));例如:UButton *btn = (UButton*)GetWidgetFromName(TEXT("Button"));

  3.点击事件,方法:btn->OnClicked.AddDynamic(this, &UMyUserWidget::OnClickButton);

  4.获取UMG里面动画,方法:(有点复杂,暂时没有找到好的方法)

  UProperty *porp = GetClass()->PropertyLink;
  UObjectProperty *objectProp = Cast<UObjectProperty>(porp);
  UObject *object = objectProp->GetObjectPropertyValue_InContainer(this);
  UWidgetAnimation* anim = Cast<UWidgetAnimation>(object);

  播放:PlayAnimation(anim);

  遇到的问题:

  1.OnClickButton方法在头文件里面一定要加 UFUNCTION()

4.在主关卡里面增加输入事件(Input)

  1.激活输入事件,InputComponent组件已继承,方法:EnableInput(GetWorld()->GetFirstPlayerController());

  2.绑定方法,方法:InputComponent->BindAxis("MoveForward", this, &ALevelScript::方法名);其方法参数为float;

  3.点击屏幕的回调,方法:InputComponent->BindTouch(EInputEvent::IE_Pressed, this, &ALevelScript::方法名);方法参数:const ETouchIndex::Type FingerIndex, const FVector Location

5.委托使用

  1.声明一个委托,方法:在头文件里面增加DECLARE_DELEGATE_OneParam(FOnSend,const FString&);这个是代参数的,有多个选择看看自己需求

  2.在头文件定义一个委托,方法:FOnSend onSend;

  3.绑定方法,方法:BindUFuntion,BindUObject

  4.Lambda方式处理,方法:class->onSend.BindLambda([&](const FString& str){需要执行的方法或处理});

  5.发送方式,方法:OnSend.ExecuteIfBound(参数);

6.定时器 

  FTimerHandle timerHandler;
  GetWorldTimerManager().SetTimer(timerHandler,this,&class::Funtion,0.0001F,true);

7.C++调用蓝图  

  1.创建C++类并增加一个函数,在函数上面增加UFUNCTION(BlueprintImplementableEvent, Category = "Test")

  2.在蓝图类Functions里面找到函数名重载一下

8.蓝图调用C++类

  1.创建C++类并增加一个函数,在函数上面增加UFUNCTION(BlueprintCallable, Category = "Test")

  2.直接搜索函数名,在Test下面

UE4 UMG的更多相关文章

  1. [UE4]UMG和关卡坐标变换、旋转小地图

    一.优化上一节的蓝图,新建一个函数addFlagToCanvas(动态添加图标到Canvas) 二. 分析地图坐标系和UMG坐标系 要根据实际情况分析关卡坐标系. UserWidget中的坐标系 三. ...

  2. [UE4]UMG小结

    一.当没有需要的UI怎么办?先别急着自己定制,可以到虚幻商城去看看,各种类型的UI都有,而且价格都不贵. 二.推荐一个比较有参考价值的UI:User Interface Kit,里面的UI很多,还有小 ...

  3. [UE4]UMG编辑器:中心点对齐

  4. [UE4]UMG编辑器:控件作为变量、预设锚点和自由锚点

  5. UE4使用UMG接口操作界面

    原文链接:http://gad.qq.com/article/detail/7181131 本文首发腾讯GAD开发者平台,未经允许,不得转载 UE4的蓝图之强大让人欲罢不能,但是实际在项目的开发中,C ...

  6. UE4中UMG与C++交互 页面文本修改

    在UE4中,有两种方式创建ui,一种是使用slate的方式,一种是UMG,UMG是slate的封装,是一个可视化的ui编辑器.slate则是纯c++方式(之前实验过一次slate创建页面,代码相当麻烦 ...

  7. [UE4]运行时UMG组件跟随鼠标的逻辑:拖拽UMG组件(蓝图)

    转自:http://aigo.iteye.com/blog/2279860 UMG - Mouse screen position problem https://forums.unrealengin ...

  8. UE4 VR GUI实现 参考(UMG AND VR)

    Note:4.13以后版本VR UI采用 WidgetComponent + WidgetInteractionComponent可轻松实现交互 Blueprint Demo: https://for ...

  9. 《Inside UE4》目录

    <Inside UE4>目录 InsideUE4 UE4无疑是非常优秀的世界上最顶尖的引擎之一,性能和效果都非常出众,编辑器工作流也非常的出色,更难得宝贵的是完全的开源让我们有机会去从中吸 ...

随机推荐

  1. AVL平衡二叉树实现

    #include<stdio.h> #include<stdlib.h> #define TRUE 1 #define FALSE 0 #define EH 0 #define ...

  2. FileReader字符的读出

    1.fileReader是字符的读出,只能读文件. 2.在读取文件的之前,该文件必须存在. 3.int reader();一次读取一个字符,返回的该字符的码值,如果想要返回字符,直接进行强转char ...

  3. zabbix3.4.7利用Windows性能监视器监控各项资源指标

    zabbix自带的windows监控模板并没有监控windows cpu使用率的监控 在cmd命令的窗口输入perfmon,就会弹出一下界面 点击性能监视器 点击如图加号,出现很多参数 选择proce ...

  4. Vue(七) 组件详解

    组件 (Component) 是 Vue.js 最核心的功能,也是整个框架设计最精彩的部分,当然也是最难掌握的. 组件与复用 组件用法 组件与创建 Vue 实例类似,需要注册后才可以使用.注册有全局注 ...

  5. MapServer Configuring with IIS

    MapServer Configuring with IIS 一.前言 1.MapServer简介 MapServer是一个用C语言编写的开源地理数据呈现引擎.除了浏览地理信息系统数据之外,MapSe ...

  6. MapServer Tutorial——MapServer7.2.1教程学习——第一节用例实践:Example1.1 A map with single layer

    MapServer Tutorial——MapServer7.2.1教程学习——第一节用例实践:Example1.1 A map with single layer 一.前言 开始MapServer用 ...

  7. day15_python_1124

    03序列化模块 04加密模块 05 os sys 模块 06 collections 模块 # 03 序列化模块 # 网络传输数据:字节 bytes# 文件写入内容:bytes , str # dic ...

  8. 有关Java垃圾回收的几个问题

    1.Java垃圾回收有什么目的?什么时候进行垃圾回收? 答:垃圾回收的目的是识别并丢弃应用中不再使用的对象以释放和重用资源. 2.System.gc()和Runtime.gc()会做什么事情? 答:这 ...

  9. python day27--网络编程

    一‘.网络基础 1.什么是IP IP地址是指互联网协议地址(英语:Internet Protocol Address,又译为网际协议地址),是IP Address的缩写.IP地址是IP协议提供的一种统 ...

  10. iOS动画学习

    学习一下动画,感谢以下大神的文章:    UIView:基础动画.关键帧动画.转场动画 Core Animation :基础动画,关键帧动画,动画组,转场动画,逐帧动画 CALayer :CALaye ...