UE4 for RPG:1

Posted on 2017-08-20 23:42 neocsl 阅读(...) 评论(...) 编辑 收藏

  1.这个工程需要的类:

  新建一个C++工程文件,我的Pawn继承自CharacterPawn,Controller继承自PlayerCharacter,GameMode就继承自GameMode。

  在这里我使用TableData建立自己的表格,TableData可以导入CSV文件,填写角色的以下参数:

  Health,MaxHealth,DPS...在C++代码中新建一个类继承自Object。我们为了在BP中方便定义,引入UE4为我们提供的宏,将他的头文件转为结构体

  

  USTRUCT(BlueprintType)

  struct FCharacterClassInfo:public FTableRowBase

  {

           GENERATED_USTRUCT_BODY()

   UPROPERTY(BlueprintReadWrite,EditAnywhere,Category="ClassInfo")

   int32 Health;

    //...

     TArray<int32> LearnedAbilities;
  }

 

  2.控制战斗的类

  之前说过这是一款回合制的游戏,不可避免的讲到回合制。我们新建一个回合制类CombatEngine用来专门处理回合制。

  在战斗过程中玩家依据这么几个战斗阶段轮询状态

  enum class CombatPhase:unit8

  {

    CP_Decision,

    CP_Action,

    CP_Victory,

    CP_GameOver,
  };

  其实这本教材中的所有笔墨都在这一部分。我们暂且跳过这一部分,毕竟是无聊的回合制游戏。将引擎的其他环节了解了专门预留一节看一下大部分的回合制游戏的制作方式吧。

 

  3.处理战斗UI的类

  在UI的使用上,使用了UMG,Slate和SlateCore。

  作为虚幻引擎的组件,每个工程文件都可以在工程解决方案中找到(YourProject.Build.CS的文件)

  PublicDependencyModuleNames.AddRange(new string[] { "Core", "CoreUObject", "Engine", "InputCore" ,"UMG","Slate","SlateCore"});  //这里在最后添加

     此外,在你的游戏.h中也得添加以下头文件.

#include "Runtime/UMG/Public/UMG.h"
#include "Runtime/UMG/Public/UMGStyle.h"
#include "Runtime/UMG/Public/Slate/SObjectWidget.h"
#include "Runtime/UMG/Public/IUMGModule.h"
#include "Runtime/UMG/Public/Blueprint/UserWidget.h"

  编译之后便可以进行Widget的创建了.
  新建一个类继承自UserWidget。此后的工作内容都会在BP中进行工作。这次Wrap up。