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,
物理碰撞:
- 关闭Editor和VS。
- 删除.vs,Binaries,Intermediate,Saved,.sln
- 对uproject,重新generate VS项目
- 打开VS项目,生成解决方案。
反射,垃圾回收,HUT
UPROPERTY(VisibleAnywhere ,Category=”ActorMeshComponents”)
UStaticMeshComponen * Static Mesh;
StaticMesh=CreateDefaultSubobject
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;
- 打开控制面板
- 选择"系统和安全"
- 选择系统
- 在"系统属性"对话框的"高级"选项卡中,选择"性能""设置"按钮
- 选择"高级"选项卡上的虚拟内存"更改"按钮
- 关闭"自动管理所有驱动器的分页文件大小",然后设置"自定义大小"。
请注意,应将
"初始大小"和"最大大小"设置为相同的值,并且应将它们设置为足够大,以避免 *** 作系统耗尽页面文件限制。
C++项目,添加UI界面时候,在build.cs文件里面,添加“UMG”;
GamePlay里面有一个GameMode
FName 不可改,查找快,忽略大小写。
FString 有很多方法。
FText
FVector 三维向量 details面板中的location
FVector3D 二维向量
FRotator 左手坐标系。
Property reference
TFieldPath
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()是等价的,后者是对前者的封装。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)