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下面

最新文章

  1. Android开发之基本控件和详解四种布局方式
  2. java script 基础知识
  3. 《DSP using MATLAB》示例Example5.21
  4. PHP图像裁剪为任意大小的图像,图像不变形,不留下空白
  5. Swift函数编程之Map、Filter、Reduce
  6. 一些iOS心得
  7. CentOS下通过locale来设置字符集
  8. Linux学习系列之Linux入门(三)gcc学习
  9. A题 - A + B Problem
  10. 惠普4431s 笔记本配置
  11. 为什么不需要为Python对象添加 getter 和 setter
  12. &quot;==&quot;和equals方法究竟有什么区别?
  13. AGC012 - E: Camel and Oases
  14. 2019 年起如何开始学习 ABP 框架系列文章-开篇有益
  15. markdown语法测试集合
  16. 牛客网_Go语言相关练习_判断&amp;选择题(6)
  17. Android 中Jackson的简单使用
  18. NIO 学习笔记
  19. WIN10系统右击开始菜单没有属性选项怎么办
  20. Maven项目编译后classes文件中没有.xml问题

热门文章

  1. NODE 开发 2-3年工作经验 掌握的相关知识
  2. SQL Server里查询表结构命令
  3. 【跟着stackoverflow学Pandas】Select rows from a DataFrame based on values in a column -pandas 筛选
  4. tensorflow_gpu-1.2.1-cp35-cp35m-win_amd64.whl文件怎么安装?
  5. Selenium+PhantomJS使用初体验
  6. 如何预编译ASP.Net程序
  7. C# 速编神器LinqPad(新版5.25)
  8. 20179223《Linux内核原理与分析》第七周学习笔记
  9. 20179223《Linux内核原理与解析》第六周学习笔记
  10. 命令“&quot;xxx.exe&quot; xxx”已退出,代码为 n。这些错误是什么意思?(3 / 123 / 9009)