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无疑是非常优秀的世界上最顶尖的引擎之一,性能和效果都非常出众,编辑器工作流也非常的出色,更难得宝贵的是完全的开源让我们有机会去从中吸 ...
随机推荐
- MVC和MVVM对比
被误解的 MVC MVC 的历史 MVC,全称是 Model View Controller,是模型 (model)-视图 (view)-控制器 (controller) 的缩写.它表示的是一种常见的 ...
- tensorFlow 零散知识
收集一些碰到的关于细节的函数在这里记录下 1.tf.flags.DEFINE_xxx() 读别人家的代码的时候经常看到这个,结果两三天不看居然忘记了,这脑子绝对上锈了,决定记下来免得老是查来查去的.. ...
- vue-vuex状态管理-1
export default vuex.Store{ State, //数据库. getters,// 是我们从数据库里取数据的 API,getters 得是一个”纯函数“ actions,//处理数 ...
- pip3 install mysqlclient 报错 “/bin/sh: 1: mysql_config: not found”的解决方法
执行 sudo apt-get install libmysqlclient-dev, 然后执行 pip3 install mysqlclient 成功.
- windows 重装系统
转载:https://blog.csdn.net/qq_41137650/article/details/80035921 老毛桃 大白菜都可以 电脑系统安装步骤我选的是用U盘做的系统 如果本计系 ...
- C#中关于对out和ref的认识
1.两者都是按照地址进行传递的.2.ref关键字是的参数按照引用传递的方式进行.他的效果是控制权传递会调用方法是,可以对这个参数进行修改 要使用ref参数,那么方法的定义和调用方法都必须进行显示的 ...
- alignedReID: surpassing human-level performance in person re-identification (paper reading)
关键点: 1)对齐 (8%) 2)mutual learning (3%) 3)classification loss, hard triplet同时 4)re-ranking (5~6%) 关于对齐 ...
- Python全栈之路----函数进阶----作用域的查找空间
n = 10 def func(): n = 20 print('func:',n) def func2(): n = 30 print('func2:',n) def func3(): print( ...
- Linq中的左连,右连,内连
1.左连接: var LeftJoin = from emp in ListOfEmployeesjoin dept in ListOfDepartmenton emp.DeptID equals d ...
- [CSL 的魔法][求排序最少交换次数]
链接:https://ac.nowcoder.com/acm/contest/551/E来源:牛客网题目描述 有两个长度为 n 的序列,a0,a1,…,an−1a0,a1,…,an−1和 b0,b1, ...