UE4学习过程

UE4学习过程,第1张

GamePlay体系

World Game

 

GameMode基础

LS:Listen Service

  • 出现的玩家和观众数量,以及允许的玩家和观众最大数量。


  • 玩家进入游戏的方式,可包含选择生成地点和其他生成/重生成行为的规则。


  • 游戏是否可以暂停,以及如何处理游戏暂停。


  • 关卡之间的过渡,包括游戏是否以动画模式开场。


基于规则的事件在游戏中发生,需要进行追踪并和所有玩家共享时,信息将通过 Game State 进行存储和同步。


这些信息包括:

  • 游戏已运行的时间(包括本地玩家加入前的运行时间)。


  • 每个个体玩家加入游戏的时间和玩家的当前状态。


  • 当前 Game Mode 的基类。


  • 游戏是否已开始。


HUD class   抬头显示器,显示血量,得分。


Default Pawn Class   默认玩家角色类别

Spectator  Class    观众类别

PlayController  玩家控制器。


不是所有的actor都能看的见,

场景中的一切,world setting和level BP也是actor

Spawnactor  创建actor

Destoryactor

Trigger Box  触发盒

抽象,复用的功能actor Component

Actor Component 与空间无关

Scene component  与空间有关,有世界坐标

关卡蓝图里面尽量不要放任何东西。


Pawn是actor的子类,是玩家能控制的角色。


里面写肉体本身的逻辑。


  

跟某一个角色相关的逻辑,写在AIController

UI最好创建在PlayController

  

GameMode只在服务器上有,客户端上没有。


因为客户端上不能相信。


游戏过程中一般不修改GameMode

GameState可以从配置表里获取。


 

枢轴点:

Alt+左键复制

Ctrl+alt+左键  多选

FName只有一份,不可变,忽略大小写。


FString可变字符串,有很多方法在里面。


FText 显示和文本本地化。


FVector:三维向量

FVector2D:二维向量

FRotator:旋转

FTransfom:包括rotataion,location,

物理碰撞:

  1. 关闭Editor和VS。


  2. 删除.vs,Binaries,Intermediate,Saved,.sln
  3. 对uproject,重新generate VS项目
  4. 打开VS项目,生成解决方案。


反射,垃圾回收,HUT

UPROPERTY(VisibleAnywhere ,Category=”ActorMeshComponents”)

UStaticMeshComponen * Static Mesh;

StaticMesh=CreateDefaultSubobject(TEXT(“CustomStaticMesh”));

BlueprintReadWrite

BlueprintReadOnly

C++,前向声明

VisibleAnyWhere

VisibleDefaultsOnly  在主编辑器不显示,在蓝图编辑器显示

EditAnyWhere     

EditDefaultsOnly    在主编辑器中不可编辑,在蓝图编辑器中可编辑

EditInstanceOnly

一般Defaults一般指蓝图编辑器。


以A开头的可以放在场景中,以U开头的只能依附。


USceneComponent  *MyScene;

UPROPERTY(EditAnyWhere,CateGory=”MyMesh”)

UStaticMeshComponent *MyStaticMesh;

UPROPERTY(EditAnyWhere,CateGory=”MyMesh”)

UparticleSystemComponent *MyParticle;

UPROPERTY(EditAnyWhere,CateGory=”MyAudio”)

UAudioComponent *MyAudio;

UPROPERTY(EditAnyWhere,CateGory=”MyBox”)

UBoxComponent *MyBox;

    

  1. 打开控制面板
  2. 选择"系统和安全"
  3. 选择系统
  4. "系统属性"对话框的"高级"选项卡中,选择"性能""设置"按钮
  5. 选择"高级"选项卡上的虚拟内存"更改"按钮
  6. 关闭"自动管理所有驱动器的分页文件大小",然后设置"自定义大小"


    请注意,应将"初始大小""最大大小"设置为相同的值,并且应将它们设置为足够大,以避免 *** 作系统耗尽页面文件限制。


C++项目,添加UI界面时候,在build.cs文件里面,添加“UMG”;

GamePlay里面有一个GameMode

FName  不可改,查找快,忽略大小写。


FString 有很多方法。


FText

FVector 三维向量    details面板中的location

FVector3D 二维向量

FRotator 左手坐标系。


Property reference

TFieldPath sss;

UHT UBT 反射工具

元素说明符:ClampMin=“s”;限制浮点数和整数

只有InstanceEditable ,才能expose on spawn

Private型变量。


不想让其它C++类访问,但是蓝图中能访问。


打印日志:

BluepintPrue

枚举。


结构体。


/float RandX = FMath::RandRange(Spawn_X_Min, Spawn_X_Max);

反射,垃圾回收,序列化,类默认对象  需要继承UObject

蓝图中set life span 也可以销毁actor

C++中有SetLifeSpan(10)函数

物理碰撞:

https://www.bilibili.com/video/BV1w64y1Y7kc?spm_id_from=333.337.search-card.all.click

只有设置为Collision,才能设置Physic

物体的详细界面:在详细面板的staicmesh点放大镜找到文件中

的位置,然后双击进入。


空气墙:可以用blocking volume

Add custom event

获取场景中的位置,https://www.cnblogs.com/timy/p/9048024.html

#include "Kismet/GameplayStatics.h"

TArray Actors;

UGameplayStatics::GetAllActorsOfClass(GetWorld(), AActor::StaticClass(), Actors);

for (AActor* Actor : Actors)

{

             

}

#include "Kismet/GameplayStatics.h"

TArray Actors;

UGameplayStatics::GetAllActorsWithTag(GetWorld(), TEXT("actorName"), Actors);

for (AActor* Actor: Actors)

{

      

}

GetActorLocation();

C++中获取GameMode

方式 1,

AMyGameMode *GM = GetWorld()->GetAuthGameMode();

方式2,

UGameplayStatics::GetGameMode(UObject* WorldContextObject);

 注:只对Server有效,Client不要调用这两个API,否则会返回NULL。


另外UWorld::GetAuthGameMode()和UGameplayStatics::GetGameMode()是等价的,后者是对前者的封装。


欢迎分享,转载请注明来源:内存溢出

原文地址: https://www.outofmemory.cn/langs/563056.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-04-02
下一篇 2022-04-02

发表评论

登录后才能评论

评论列表(0条)

保存