UE4 C++ Puzzle 模版学习和分析
来源:互联网 发布:jquery post get json 编辑:程序博客网 时间:2024/06/01 21:37
UE4 version: 4.17
1. 核心C++类
PuzzleBlock: 用于交互的一个个小立方块,它包含了两类事件操作:鼠标从上面划过,鼠标单击事件。
- Puzzle: 工程模块生成类,用于生成dll
- PuzzleGameMode:设置游戏运行模式,初始化游戏中的Pawn、Controller对象
APuzzleGameMode::APuzzleGameMode() { // no pawn by default DefaultPawnClass = APuzzlePawn::StaticClass(); // use our own player controller class PlayerControllerClass = APuzzlePlayerController::StaticClass(); }
PuzzlePawn:游戏的虚拟玩家,主要提供以下接口:
public: virtual void Tick(float DeltaSeconds) override; virtual void SetupPlayerInputComponent(UInputComponent* PlayerInputComponent) override; virtual void CalcCamera(float DeltaTime, struct FMinimalViewInfo& OutResult) override;protected: void OnResetVR(); void TriggerClick(); void TraceForBlock(const FVector& Start, const FVector& End, bool bDrawDebugHelpers);
PuzzleBlockGrid: 网格类,作为游戏的框架部分,提供必要模块的初始化工作,并记录分数。它有一部分创建PuzzlePawn的代码中,计算行数和列数(通过除法和求余实现)写的比较精辟,在此分析下:
void APuzzleBlockGrid::BeginPlay()
{Super::BeginPlay();// Number of blocks// Size = 3;// BlockSpacing = 300.f;const int32 NumBlocks = Size * Size; // 定义网格大小// Loop to spawn each blockfor(int32 BlockIndex=0; BlockIndex<NumBlocks; BlockIndex++){ const float XOffset = (BlockIndex/Size) * BlockSpacing; // Divide by dimension 通过除法计算行数 const float YOffset = (BlockIndex%Size) * BlockSpacing; // Modulo gives remainder 通过求余计算列数 // Make position vector, offset from Grid location const FVector BlockLocation = FVector(XOffset, YOffset, 0.f) + GetActorLocation(); // Spawn a block APuzzleBlock* NewBlock = GetWorld()->SpawnActor<APuzzleBlock>(BlockLocation, FRotator(0,0,0)); // Tell the block about its owner if (NewBlock != nullptr) { NewBlock->OwningGrid = this; }}
}
PuzzleController: 玩家控制器类。
阅读全文
0 0
- UE4 C++ Puzzle 模版学习和分析
- UE4入门学习2:工程结构分析
- 线段树模版和学习
- UE4命令行参数的学习和使用
- UE4 美术学习笔记和经验
- UE4 美术学习笔记和经验
- 学习ue4
- ue4 学习
- [C++]模版特例化和模版偏特化
- UE4线程池源码分析和线程池的封装
- C Puzzle解答(1)
- C Puzzle解答(2)
- UE4 性能及分析
- ue4 网络代码分析
- ue4 网络代码分析
- UE4网络代码分析
- <UE4>分析UObjectBase
- <UE4> 分析 UObjecBaseUtility
- ASCII、Unicode、GBK和UTF-8字符编码的区别联系
- Spring MVC访问页面直接显示源码
- C# 高级编程 对象和类型
- angularjs开发过程,错误集合
- 使用LinkedHashMap进行分数排序
- UE4 C++ Puzzle 模版学习和分析
- An Introduction to DNS Terminology, Components, and Concepts
- 学习笔记
- 如何清除Excel2007中的网格线?
- 第十二周项目三——Dijkstra算法的验证
- nodejs express路由详解
- Git工作流指南:Gitflow工作流
- Java设计模式(二)----工厂模式
- Yii 框架增删改查