当前位置: 首页 > news >正文

虚幻引擎5 GAS开发俯视角RPG游戏 P06-09 玩家等级与战斗接口

一.创建一个变量Level:

1.英雄在PlayState类

 Source/CC_Aura/Public/Player/CC_PlayerState.h:

(1)定义变量

private:UPROPERTY(VisibleAnywhere, ReplicatedUsing = OnRep_Level)int32 Level;

(2)复制回调函数:

	UFUNCTION()void OnRep_Level(int32 OldLevel);

void ACC_PlayerState::OnRep_Level(int32 OldLevel)
{}

(3)复制策略:

public:// 用于声明哪些变量需要在服务器和客户端之间自动复制‌virtual void GetLifetimeReplicatedProps(TArray<FLifetimeProperty>& OutLifetimeProps) const override;
void ACC_PlayerState::GetLifetimeReplicatedProps(TArray<FLifetimeProperty>& OutLifetimeProps) const
{Super::GetLifetimeReplicatedProps(OutLifetimeProps);DOREPLIFETIME(ACC_PlayerState, Level);
}

2.敌人在角色类

	UPROPERTY(VisibleAnywhere, BlueprintReadOnly, Category = "Enemy Level")int32 Level;

二. 创建战斗接口:

1.创建接口函数:

Source/CC_Aura/Public/Interations/CC_CombatInterface.h:

public:virtual int32 GetCharacterLevel();
int32 ICC_CombatInterface::GetCharacterLevel()
{return 0;
}

2.角色基类继承接口:

class CC_AURA_API ACC_CharacterBase : public ACharacter,public IAbilitySystemInterface, public ICC_CombatInterface

3.敌人类实现接口函数:

Source/CC_Aura/Public/Characters/CC_EnemyCharacter.h

	/*ICC_CombatInterface接口函数:*		1.获取角色等级*/
#pragma region ICC_CombatInterfacevirtual int32 GetCharacterLevel() override;#pragma endregion
int32 ACC_EnemyCharacter::GetCharacterLevel()
{return Level;
}

4.英雄类实现战斗接口函数:

/*ICC_CombatInterface接口函数:
*		1.获取角色等级
*/
#pragma region ICC_CombatInterfacevirtual int32 GetCharacterLevel() override;#pragma endregion

int32 ACC_HeroCharacter::GetCharacterLevel()
{if (CCPlayerState == nullptr){CCPlayerState = GetPlayerState<ACC_PlayerState>();	//获取玩家状态}return CCPlayerState->GetCharacterLevel();
}

显然,我们要先在CCPlayerState类里定义GetCharacterLevel()函数:

Source/CC_Aura/Public/Player/CC_PlayerState.h

public:FORCEINLINE int32 GetCharacterLevel() const {return Level;}

http://www.dtcms.com/a/507044.html

相关文章:

  • JavaSE内容梳理与整合
  • JavaScript日期处理:格式化与倒计时实现
  • 网页与网站设计 什么是属性网站开发用的框架
  • 长沙正规网站建设价格公司概况简介
  • STM32卡尔曼滤波算法详解与实战应用
  • 【自适应粒子滤波 代码】Sage Husa自适应粒子滤波,用于克服初始Q和R不准确的问题,一维非线性滤波。附有完整的MATLAB代码
  • 未来的 AI 操作系统(三)——智能的中枢:从模型到系统的统一
  • 群晖无公网IP内网穿透工具—ZeroNews(零讯)套件详解
  • [日常使用]Anaconda 常见问题排查手册
  • 【Python入门】第3篇:流程控制之条件判断
  • 网站建设初级教程seo高效优化
  • 智能排课系统实战 Java+MySQL实现课程自动编排与冲突检测
  • 【EE初阶 - 网络原理】传输层协议
  • 电子商务网站建设的难点设计创意网站推荐
  • 【Linux环境下安装】SpringBoot应用环境安装(五)-milvus安装
  • Windows使用docker安装milvus的配置文件
  • 记录之Ubuntu22.4虚拟机及hadoop为分布式安装
  • K8s 运维三大核心难题:DNS 故障、有状态存储、AI 赋能 SRE 解决方案
  • c#WPF基础知识
  • 云栖实录|阿里云 Milvus:AI 时代的专业级向量数据库
  • 科技网站小编账号运营竞争性谈判
  • 华为FreeBuds 7i空间音频不灵敏怎么办?
  • Java Stream 高级应用:优雅地扁平化(FlatMap)递归树形结构数据
  • git推送本地仓库到远程 以及 模拟多人协作
  • 【开题答辩实录分享】以《预约上门维修服务运营与数据分析系统的设计与实现》为例进行答辩实录分享
  • 数据结构7:栈和队列
  • SpringBoot的启动流程原理——小白的魔法引擎探秘
  • Vue3 + Element Plus 弹框树形结构首次打开不更新问题排查与解决
  • 我先做个网站怎么做网络推广技术外包
  • 互联网公司排名前十名名单seo整站优化更能准确获得客户