UE4 UMG
转自: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的更多相关文章
- [UE4]UMG和关卡坐标变换、旋转小地图
一.优化上一节的蓝图,新建一个函数addFlagToCanvas(动态添加图标到Canvas) 二. 分析地图坐标系和UMG坐标系 要根据实际情况分析关卡坐标系. UserWidget中的坐标系 三. ...
- [UE4]UMG小结
一.当没有需要的UI怎么办?先别急着自己定制,可以到虚幻商城去看看,各种类型的UI都有,而且价格都不贵. 二.推荐一个比较有参考价值的UI:User Interface Kit,里面的UI很多,还有小 ...
- [UE4]UMG编辑器:中心点对齐
- [UE4]UMG编辑器:控件作为变量、预设锚点和自由锚点
- UE4使用UMG接口操作界面
原文链接:http://gad.qq.com/article/detail/7181131 本文首发腾讯GAD开发者平台,未经允许,不得转载 UE4的蓝图之强大让人欲罢不能,但是实际在项目的开发中,C ...
- UE4中UMG与C++交互 页面文本修改
在UE4中,有两种方式创建ui,一种是使用slate的方式,一种是UMG,UMG是slate的封装,是一个可视化的ui编辑器.slate则是纯c++方式(之前实验过一次slate创建页面,代码相当麻烦 ...
- [UE4]运行时UMG组件跟随鼠标的逻辑:拖拽UMG组件(蓝图)
转自:http://aigo.iteye.com/blog/2279860 UMG - Mouse screen position problem https://forums.unrealengin ...
- UE4 VR GUI实现 参考(UMG AND VR)
Note:4.13以后版本VR UI采用 WidgetComponent + WidgetInteractionComponent可轻松实现交互 Blueprint Demo: https://for ...
- 《Inside UE4》目录
<Inside UE4>目录 InsideUE4 UE4无疑是非常优秀的世界上最顶尖的引擎之一,性能和效果都非常出众,编辑器工作流也非常的出色,更难得宝贵的是完全的开源让我们有机会去从中吸 ...
随机推荐
- idea中springboot项目程序入口右键不显示run as的原因
今天在idea中导入了springboot的项目,但是在程序的入口处右键单击没有出现run as 的程序启动方式,主要原因在于idea中右面的maven projects中没加载项目,需要点击“+“ ...
- 正常终止expdp作业
1.先查询expdp对应的job_nameSQL> select * from dba_datapump_jobs; OWNER_NAME JOB_NAME OPERATION JOB_MOD ...
- Python 3.6.5 导入pymysql模块出错:No module named 'pymysql'
检查一下项目设置中的解释器. 查看是否添加PyMySQL模块,如果没有请添加PyMySQL模块
- [HDU6146]Pokémon GO
Problem 有一个2n的方格矩阵 在一个格子上可以往旁边8个方向走(如果有格子),求有多少方案把2n走完 Solution 我们用Fi表示从一个角出发走遍所有格子回到这一列另外一点的方案数 显然, ...
- mkpasswd命令
全称mkpasswd make password(用来生成密码的一个工具):随机生成一些高强度的密码,默认生成9位由大小写字母,特殊符号和数字的密码 [root@master ~]# yum inst ...
- AC Challenge(状压dp)
ACM-ICPC 2018 南京赛区网络预赛E: 题目链接https://www.jisuanke.com/contest/1555?view=challenges Dlsj is competing ...
- 测试同学必备抓包工具--charles之安装
1,下载charles,官网:https://www.charlesproxy.com/ 2,下载完成,先试着用一下,网址访问百度看看... 注意,windows proxy如果勾选,则代表可以抓取网 ...
- 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 ...
- 2017-9-3模拟赛T1 卡片(card)
题目 [题目描述] lrb 喜欢玩卡牌.他手上现在有n张牌,每张牌的颜色为红绿蓝中的一种.现在他有两种操作.一是可以将两张任意位置的不同色的牌换成一张第三种颜色的牌:二是可以将任意位置的两张相同颜色的 ...
- python自学第13天 hashlib,re模块
import hashlib sha=hashlib.sha3_512()#定义加密成什么格式 sha.update('how to use sha1 in 年后 '.encode('utf-8')) ...