UE4 C++ Puzzle 模版学习和分析
2017-12-08 14:26
260 查看
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 block for(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: 玩家控制器类。
相关文章推荐
- C++学习笔记34 模版的原理
- POCO C++库学习和分析 -- 跨平台库的生成
- UE4学习笔记-人物旋转控制(c++实现)
- C++学习阶段分析
- C++学习笔记34 模版的原理
- C++学习笔记5——内联函数分析
- C++学习笔记36 模版的显式具体化(template specialization)和显式实例化(template instantiation)
- POCO C++库学习和分析 -- 内存管理 (一)
- C++学习之【使用位操作符求素数分析】
- UE4学习2 使用粒子效果 C++
- POCO C++库学习和分析 -- Foundation库SharedLibrary模块分析
- c&c++反汇编与逆向分析学习笔记(8)--除法表达式
- C++学习笔记:函数模版
- UE4学习4 用射线控制物体转圈圈 C++
- c++模版学习
- POCO C++库学习和分析 -- 通知和事件 (三)
- C++ Primer 学习笔记_45_STL实践与分析(19)--泛型算法的结构
- 关于动画特效师学习Python还是C++的几个分析(别人的)
- POCO C++库学习和分析 -- 数据类型转换
- C++学习重点分析