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无疑是非常优秀的世界上最顶尖的引擎之一,性能和效果都非常出众,编辑器工作流也非常的出色,更难得宝贵的是完全的开源让我们有机会去从中吸 ...
随机推荐
- C++11 boost TR1 TR2曾经参考过的网址整理
boost::bind的用法:http://blog.csdn.net/adcxf/article/details/3970116
- sass compass config.rb
require 'compass/import-once/activate' # Require any additional compass plugins here. # Set this to ...
- UVa 11100 - The Trip, 2007 难度: 0
题目 https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&a ...
- C语言实现Winsocket网络传输数据时乱码问题
问题描述:输入中文字符时在数据结尾总是有别的字符冒出 解决办法: recvBuf[ret] = '\0';//接收数据的数组,表示存储的数据截止,后面没有数据了 再运行,传输正常. 提示:C语言基础知 ...
- <a></a>标签传参出现乱码问题
在段代码在传递参数的时候会出现中文乱码,正常情况下,只要在接收参数的时候写上: request.setCharacterEncoding("UTF-8");就能解决问题. 但是,今 ...
- 解决jmeter乱码
1. 解决响应数据乱码的方法: 在jemter文件下找到bin\jmeter.properties添加下面一句话: sampleresult.default.encoding=UTF-8 ...
- 安装软件碰见error2502 2503
把鼠标放到Win8屏幕的最左下角,等待Win8 Metro界面的缩略图出现后点击鼠标右键,在弹出的菜单中选择“命令提示符(管理员)” 打开的“命令提示符(管理员)” 找到自己将要安装的程序路径 ...
- 邮件远控电脑MCC-python实现
本次实现的是一个通过邮件来远程控制电脑,以达到某些远程操作,例如让电脑执行CMD命令,播放音乐,打开指定文件等操作的项目.代码参考了网上的部分教程. 具体流程: 在python代码中,通过一个循环来接 ...
- C# 流水号生成器开发
前言 本文将使用一个Nuget公开的组件技术来实现一个流水号生成器,提供了一些简单的API,来方便的实现一个通用的流水号. 在visual studio 中的NuGet管理器中可以下载安装,也可以直接 ...
- 【转载】 强化学习(八)价值函数的近似表示与Deep Q-Learning
原文地址: https://www.cnblogs.com/pinard/p/9714655.html ------------------------------------------------ ...