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 代码总结的更多相关文章

  1. UE4 代码编写细节:静态变量

    Note:因为在切换关切时,会GC掉所有GameThread线程下的Object类,如果Static是UOBject 请调用AddToRoot函数  当然如果你的UObject子类Object是在自己 ...

  2. ue4 代码入门

    官网:暴露游戏元素给蓝图 https://docs.unrealengine.com/latest/CHN/Engine/Blueprints/TechnicalGuide/ExtendingBlue ...

  3. UE4代码片断备份

    在Actor内创建一个StaticMesh #include "Components/StaticMeshComponent.h" #include "Engine/St ...

  4. 使用GIT管理UE4代码

    在OSCHINA的GIT上创建远程项目 cd existing_git_repo git init git add Onepass/ Source/ notes.txt git commit -m & ...

  5. UE4中类自动生成代码解析

    本文章由cartzhang编写,转载请注明出处. 所有权利保留. 文章链接:http://blog.csdn.net/cartzhang/article/details/73189272 作者:car ...

  6. 瞧,这就是UE4 C++

    1.虚幻中的类前缀你会见到U,A,F,以下就是很好的罗列其中的意义 U: UObject继承过来的,例如UTexture A: AActor继承过来的,例如AGameMode F: 其他的类和结构,例 ...

  7. [工作积累] UE4 TAA ReProjection的精度处理

    先贴一个UE4 TAA的slidehttps://de45xmedrsdbp.cloudfront.net/Resources/files/TemporalAA_small-59732822.pdf ...

  8. Unreal Enginer4特性介绍-牛B闪闪的UE4

    声明:转载说明出处! unreal4特性介 原文地址:   https://www.unrealengine.com/products/unreal-engine-4     unreal engin ...

  9. Aery的UE4 C++游戏开发之旅(2)编码规范

    目录 C++基础类型规范 命名规范 头文件规范 字符串规范 字符集规范 参考 C++基础类型规范 由于PC.XBOX.PS4等各平台的C++基础类型大小可能不同(实际上绝大部分都是整型类型的大小不同) ...

随机推荐

  1. CUDA库函数module management

    http://horacio9573.no-ip.org/cuda/group__CUDA__MODULE_ga52be009b0d4045811b30c965e1cb2cf.html

  2. DRF中序列化器定义及使用

    首先需要明白序列化和反序列化的定义及作用: 序列化是将程序语言转换为JSON/XML; 反序列化是将JSON/XML转换为程序语言; 对应到Django中,序列化即把模型对象转换为字典形式, 在返回给 ...

  3. MoreEffectiveC++Item35(基础议题)(条款1-4)

    条款1:区别指针和引用 条款2:最好使用C++转换操作符 条款3: 绝对不要以多态的方式处理数组 条款4: 避免无用的缺省构造函数 条款1:区别指针和引用 1.指针(pointer) 使用[*/-&g ...

  4. JS跨页面或跨JS文件对变量赋值

    JS跨页面或跨JS文件对变量赋值,这是很小的一个问题. 但问题虽小,却总觉得有点不够自然,不爽. 为什么呢?访问一个页面上的变量不是什么难事,比如用parent.变量名,或者windows名.变量名, ...

  5. java中的Reference

    这两天又重新学习了一下Reference,根据网上的资源做了汇总. Java中的引用主要有4种: 强引用 StrongReference: Object obj = new Object(); obj ...

  6. 今天在win7下安装Fedora22

    <h4>技嘉主板970如何设置BIOS从U盘启动安装系统</h4>1.电脑开机按“Del”键进入主板设置项,选择“BIOS”设置 <a href="http:/ ...

  7. WebForm、MVC图片加载失败处理

    还是那个该死的WebFrom项目,部分功能替换为MVC后感觉好多了,但是WebForm.MVC都有图片加载失败时显示提示图片的需求,并且统一在js中处理.问题来了,js中图片路径怎么处理呢?现场有可能 ...

  8. oracle中查询结果集为空,则得到一个默认值

    有同事问我上述问题,我把我的实现思路写出来.子查询把查询的结果和默认的结果全部显示.父查询通过伪列rownum来筛选,如果查询有结果,就有几条就显示几条,而不去显示子查询中的默认值:如果查询没有结果, ...

  9. BZOJ5196: [Usaco2018 Feb]Taming the Herd(DP暴力)

    5196: [Usaco2018 Feb]Taming the Herd Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 78  Solved: 71[ ...

  10. HDU - 4339: Query(bitset暴力找下一个为1的)

    题意:给定A,B长度相同的字符串,Q次操作,修改操作位单个字符修改,查询操作为询问从某点开始有多少连续相同的字符. 思路:我们把不相同的设为1,相同的设为0,那么询问就是找下一个为1的为位置,可以用线 ...