UE4 C++基础

16 篇文章 0 订阅

1.C++日志调试:

  • 输出字符串到Output Log中

FString filePath

UE_LOG(LogTemp, Log, TEXT("%s"), *filePath);

UE_LOG(LogTemp, Error, TEXT("Hello,World!"));
  • 输出字符串到屏幕上

FString filePath;

GEngine->AddOnScreenDebugMessage(-1, 5.f, FColor::Green,FString::Printf(TEXT("DLL_Init")));

GEngine->AddOnScreenDebugMessage(-1, 5.f, FColor::Green,FString::Printf(TEXT("%s"),*filePath));
  • 自定义Log日志

.h文件
DECLARE_LOG_CATEGORY_EXTERN(MyProjectLog, Log, All);
.cpp
DEFINE_LOG_CATEGORY(MyProjectLog);
需要打印日志的.cpp添加申明自定义日志的头文件

FString filePath

UE_LOG(MyProjectLog, Log, TEXT("%s"), *filePath);

UE_LOG(MyProjectLog, Error, TEXT("Hello,World!"));

 

 

 2.

  • 如果要在蓝图定义一个接口,需要在头文件中使用 UPROPERTY(EditAnywhere), UPROPERTY 宏使得变量对 虚幻引擎 可见
  • Action Mappings (动作映射)想象成"是或否"的输入,类似于鼠标按键或摇杆按键。 当在短时间内按键、松开、双击或按住不放时,它们会进行该项操作的汇报。 离散事件的动作,诸如跳跃、射击或与物体互动都可以使用这种类型的映射。 Axis Mappings (坐标轴映射)是持续不断的 - 您可以把它们想象成为"数量"输入,例如摇杆上的杆,或者鼠标指针的位置。 它们会在每一帧汇报其值,即使在不移动时也是如此。 一般涉及到量级或方向的内容,比如行走、到处看、开车等都可以用这种方式来处理。 
  • 4. 定义一个布尔类型时:bool bGrowing; b要小写,后面的字母大写
  • 5. 需要用到数学表达式时:FMath::Sin

CurrentVelocity.X = FMath::Clamp(AxisValue, -1.0f, 1.0f)*100.0f;

  • 关于clamp的用法:

Math.clamp(- 5 , 2 , 15 );     // returns 2 ,小于最小值时,输出最小值
Math.clamp( 4 . 6 , 2 , 15 );    // returns 4.6 ,在范围内输出本值
Math.clamp( 103 , 2 , 15 );    // returns 15 ,大于最大值时,输出最大值

  • F7在VS中编译
  • UActorComponent:UObject的子类,主要作为Actor的组件,用来控制Actor移动,渲染Actor等等。主要有两种基本的组件USceneComponent和UPrimitiveComponent。

USceneComponent:拥有一个transform,定义了位移,偏转,缩放。
UPrimitiveComponent:具有某种形式的表现,如网格,粒子等可见的东西。

 

9. 在UE4中实现移动鼠标或者按键来控制摄像头的移动,一般步骤

9.1 在头文件中声明函数及变量用于追溯输入,比如说 MoveForward(float AxisValue); PitchCamera(float AxisValue); 
9.2 在源文件中定义声明的的函数
9.3 在SetupPlayerInputComponent 类中,绑定输入事件及代码,例如 InputComponent->BindAction("ZoomIn", IE_Pressed, this, &APawnWithCamera::ZoomIn);
9.4 在Tick中更新数据

 

10.静态加载指的是必须在构造函数中完成的加载方式,动态加载值得是可以在Runtime期间加载的方式,UE4源码里面,前者其实是对后者的一层封装,即FObjectFinder()是对LoadObject()的封装。But,FClassFinder()不是对LoadClass()的封装,FClassFinder()内部调用的是LoadObject()。

 

11. 开发调试时输出日志:GEngine->AddOnScreenDebugMessage(-1, 5.0f, FColor::Yellow, TEXT("Hello World, this is FPSGameMode1"));首参数-1,表示无需更新或刷新此消息,第二个参数表示持续时间

 

12.Character 基类定义两个必要函数AddControllerYawInput、AddControllerPitchInput;可直接进行绑定, InputComponent->BindAxis("Turn", this, &AFPSCharacter::AddControllerYawInput); InputComponent->BindAxis("LookUp", this, &AFPSCharacter::AddControllerPitchInput);

13.UPROPERTY()内参数的意思,参见http://blog.csdn.net/u010133610/article/details/54171590

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值