转自: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. idea中springboot项目程序入口右键不显示run as的原因

    今天在idea中导入了springboot的项目,但是在程序的入口处右键单击没有出现run  as 的程序启动方式,主要原因在于idea中右面的maven projects中没加载项目,需要点击“+“ ...

  2. 正常终止expdp作业

    1.先查询expdp对应的job_nameSQL> select * from dba_datapump_jobs; OWNER_NAME JOB_NAME  OPERATION JOB_MOD ...

  3. Python 3.6.5 导入pymysql模块出错:No module named 'pymysql'

    检查一下项目设置中的解释器. 查看是否添加PyMySQL模块,如果没有请添加PyMySQL模块

  4. [HDU6146]Pokémon GO

    Problem 有一个2n的方格矩阵 在一个格子上可以往旁边8个方向走(如果有格子),求有多少方案把2n走完 Solution 我们用Fi表示从一个角出发走遍所有格子回到这一列另外一点的方案数 显然, ...

  5. mkpasswd命令

    全称mkpasswd make password(用来生成密码的一个工具):随机生成一些高强度的密码,默认生成9位由大小写字母,特殊符号和数字的密码 [root@master ~]# yum inst ...

  6. AC Challenge(状压dp)

    ACM-ICPC 2018 南京赛区网络预赛E: 题目链接https://www.jisuanke.com/contest/1555?view=challenges Dlsj is competing ...

  7. 测试同学必备抓包工具--charles之安装

    1,下载charles,官网:https://www.charlesproxy.com/ 2,下载完成,先试着用一下,网址访问百度看看... 注意,windows proxy如果勾选,则代表可以抓取网 ...

  8. L330 Black hole picture captured for first time in space ‘breakthrough’

    Black hole picture captured for first time in space ‘breakthrough’ Astronomers have captured the fir ...

  9. 2017-9-3模拟赛T1 卡片(card)

    题目 [题目描述] lrb 喜欢玩卡牌.他手上现在有n张牌,每张牌的颜色为红绿蓝中的一种.现在他有两种操作.一是可以将两张任意位置的不同色的牌换成一张第三种颜色的牌:二是可以将任意位置的两张相同颜色的 ...

  10. python自学第13天 hashlib,re模块

    import hashlib sha=hashlib.sha3_512()#定义加密成什么格式 sha.update('how to use sha1 in 年后 '.encode('utf-8')) ...