UE4 代码总结

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);

时间: 2024-10-05 10:57:19

UE4 代码总结的相关文章

使用GIT管理UE4代码

在OSCHINA的GIT上创建远程项目 cd existing_git_repo git init git add Onepass/ Source/ notes.txt git commit -m "init" git remote add origin https://git.oschina.net/tworiver/islands.git git push -u origin master

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

先贴一个UE4 TAA的slidehttps://de45xmedrsdbp.cloudfront.net/Resources/files/TemporalAA_small-59732822.pdf 里面细节问题很多,先记录一下目前想到和遇到的问题,便于备忘,后面有空的话再记录. TAA用到的Velocity和抖动对精度要求比较高, 特别是大场景下误差容易比较大,UE4做了一系列的处理来保持精度. 投影矩阵的精度 1 static const FMatrix InvertProjectionMa

3.瞧,这就是UE4 C++

1.虚幻中的类前缀你会见到U,A,F,以下就是很好的罗列其中的意义 U: UObject继承过来的,例如UTexture A: AActor继承过来的,例如AGameMode F: 其他的类和结构,例如FName, FVector T:模板,例如TArray,TMap,TQueue I: 接口类,ITransaction E:枚举, ESelectionMode B: Boolean, bEnabled 2.区分大小写! 用宏定义来包裹C++代码 UCLASS 来包裹类 USTRUCT 包裹结构

OCulus Rift的屏蔽警告方法实测

本文章由cartzhang编写,转载请注明出处. 所有权利保留. 文章链接:http://blog.csdn.net/cartzhang/article/details/45870243 作者:cartzhang OCulus头盔的屏蔽警告方法实测 一.     关于警告 OC头盔的健康与安全警告,是官方的提示.对新用户来说,第一次使用至少要显示15秒的时间.警告和提醒都是很必要多. 所以,请在你已知安全的情况下,屏蔽此警告.   我们将要屏蔽的东西是这个,如下图: 或者这样 二.     屏蔽

错误和问题解决的成本

问题描写叙述 错误 数据收集 根本原因 版本号   组件:数据修复           在一个实际成本组织中,(平均,先进先出,后进先出) 一个或更 多的下面情况可能发生: 1.导航到物料成本历史表单上的数量信息,与现有量表单的数量不匹配的记录 2. 一些物料前期已计成本的数量与前面的事务处理历史表单的数量不匹配 3. 全部的库存值报表与事务处理值报表不匹配 4. 存货层次成本更新表单的总数量与现有量数量表单不匹配(只在先进先出/后进先出) 5.这些症状的不论什么一个意味着 MMT-CQL不匹配

UE4新手编程之代码初试

虚幻4中常用的按键和快捷键 虚幻4中有一些按键和快捷键很常用,牢记它们并运动到实际的项目开发中,将会大大地提高你的工作效率和使得工作更简便快捷.下面将列举它们出来: 按键 动作 鼠标左键 选择actor 鼠标左键+拖动 前后移动和左右旋转摄像头 鼠标右键 选择actor并打开右键菜单 鼠标右键+拖动 旋转摄像头方向 鼠标左键+鼠标右键+拖动 摄像头上下左右移动 鼠标中键+拖动 摄像头上下左右移动 滑轮向上 摄像机向前移动 滑轮向下 摄像机向后移动 F 聚焦选中的actor 箭头方向键 摄像机前后

游戏开发之在UE4中编写C++代码控制角色

当你运行我们上次做完的项目,你可能会意识到我们移动的摄像机还是默认的那个摄像机,这个默认的摄像机可以自由飞翔.这一节,我们要使得开始的角色是我们的一个Avatar类的实例对象,并且使用键盘控制我们的角色. 一 创建游戏模式类 首先我们要明白什么是GameMode?GameMode包含了各种各样的游戏规则和让游戏引擎描述这个游戏是怎么玩的. 1. 创建游戏模式的步骤如下: 1) 点击文件 --> 新建C++类. 2) 选择Game Mode(游戏模式). 3) 将其命名为"MyGameMod

UE4 ShooterGame Demo的开火的代码

之前一直没搞懂按下鼠标左键开火之后,代码的逻辑是怎么走的,今天终于看懂了.但是我只是知道了代码怎么调用的,但是还没有深入看最后的开火函数的内容,我要继续研究一下ShooterWeapon.cpp里面的void AShooterWeapon::HandleFiring()方法 ShooterCharacter.cpp void AShooterCharacter::OnStartFire() { AShooterPlayerController* MyPC = Cast<AShooterPlaye

UE4 退出(关闭)程序 代码

UE4.17.2,VS2017 在要执行退出的地方加上如下语句 UKismetSystemLibrary::QuitGame(this, nullptr, EQuitPreference::Quit); 看很多例子要引入 #include "KismetSystemLibrary.h" 但我试的结果是这个include会报错,不加就好 原文地址:http://blog.51cto.com/shuxiayeshou/2300556