UE4中的C++知识

1. 变量命名首字母大写

2. 如果要在蓝图定义一个接口,需要在头文件中使用 UPROPERTY(EditAnywhere), UPROPERTY 宏使得变量对 虚幻引擎 可见

3. Action Mappings (动作映射)想象成"是或否"的输入,类似于鼠标按键或摇杆按键。 当在短时间内按键、松开、双击或按住不放时,它们会进行该项操作的汇报。 离散事件的动作,诸如跳跃、射击或与物体互动都可以使用这种类型的映射。 Axis Mappings (坐标轴映射)是持续不断的 - 您可以把它们想象成为"数量"输入,例如摇杆上的杆,或者鼠标指针的位置。 它们会在每一帧汇报其值,即使在不移动时也是如此。 一般涉及到量级或方向的内容,比如行走、到处看、开车等都可以用这种方式来处理。 

4. 定义一个布尔类型时:bool bGrowing; b要小写,后面的字母大写

5. 需要用到数学表达式时:FMath::Sin

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

6. 关于clamp的用法:

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

7. F7在VS中编译

8. 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




相关代码语句:

//获取坐标并定义
FVector NewLocation = GetActorLocation();  
//设置actor坐标
SetActorLocation(NewLocation);             
// 将此pawn设置为由最低数量的玩家进行控制
AutoPossessPlayer = EAutoReceiveInput::Player0;
//设置玩家控制器,需要添加头文件 #include "Kismet/GameplayStatics.h"
APlayerController* OurPlayController = UGameplayStatics::GetPlayerController(this, 0);
//判断玩家控制器的摄像机是否为CameraOne
if ((OurPlayController->GetViewTarget()!=CameraOne)&&(CameraOne!=nullptr)){}
//设置摄像机(融合切换)OurPlayController->SetViewTarget(CameraOne);
OurPlayController->SetViewTargetWithBlend(CameraOne, SmoothBlendTime);
//静态加载网格资源
static ConstructorHelpers::FObjectFinder
//获取屏幕中心点(方法一)
FVector2D ViewportSize = FVector2D(GEngine->GameViewport->Viewport->GetSizeXY());
FVector2D ViewCenter = FVector2D(ViewportSize.X / 2, ViewportSize.Y / 2);
//获取屏幕中心点后,设置准星的位置GetSurfaceWidth()
FVector2D CrossHairDrawPostion(ViewCenter.X - (CrosshairTexture->GetSurfaceWidth()*0.5f), ViewCenter.Y - (CrosshairTexture->GetSurfaceHeight()*0.5f));
//获取屏幕中心点(方法二)
FVector2D Center(Canvas->ClipX*0.5f, Canvas->ClipY*0.5f);
  • 3
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值