前一篇文章我们看到了《炉石传说》的核心卡牌数据的存储,今天我们继续探索卡牌&技能。

主要的类

通过之前的分析,卡牌&技能涉及到几个类体系:Entity,Actor,Card,Spell,令人十分困惑,特别是前两者。在这里先略带武断的说一下这几个类的基本定位:
  • Entity主要用来做网络数据同步用的;
  • Actor主要处理客户端的渲染对象的控制,作为Component挂载在资源对象上;
  • Spell是技能Prefab挂载的脚本;
  • Card是卡牌Prefab挂载的脚本,在运行时处于中心地位,处理前3者的联系。

Entity

  • Entity是通过网络数据创建的,主要是Network.PacketID.POWER_HISTORY这个消息。详见GameState.CreateNewEntities()函数。因为Entity并不是MonoBehavior派生类,所以是new出来的,然后添加到GameState中管理(GameState.AddEntity()),网络传来的Entity数据主要是Tags(每个Tag是一个name->value对),然后调用Entity.InitEntity();

Actor

  • Actor也是一种资源,通过AssetLoader.LoadActor()加载;
  • 对应于AssetFamily.Actor;
  • 对应的资源包为“actor?.unity3d”,包内的为GameObject;
  • Actor的加载入口是在:Card.DetermineActorThenTransitionToZone()

Spell

  • Spell的加载入口是在Entity.ProcessCardDefAssetRequest()

Card

  • 在InitEntity中调用了Entity.InitCard(),它做的工作只是创建一个空的GameObject,然后使用AddComponent把Card添加上去。
  • 真正的卡牌Prefab加载是在Entity.LoadCard()中进行的,这个函数是在处理PowerTask时GameState.OnShowEntity()中调用的;
  • 具体的加载操作是通过 DefLoader.LoadCardDef()进行的,其内部再调用AssetLoader.LoadCardPrefab()来进行资源加载;

卡牌&技能的加载流程

Entity的创建,以及Card、Spell的加载,都由网络消息触发;整个过程比较复杂,主要是有很多异步回调,比较难用文字描述,请见下图:

《炉石传说》架构设计赏析(6):卡牌 技能数据的运行时组织相关推荐

  1. 炉石传说职业梯队和强势卡牌推荐

    炉石传说作为的一款卡牌游戏,其故事以魔兽争霸的世界观为背景.从纳克萨玛斯到探险者协会再到如今的安戈洛和冰封王座版本,炉石传说的卡牌库发生了巨大的改变,特别是随着近两个版本中超模牌和DK的增加,竞技场的 ...

  2. c语言炉石传说模仿代码项目,炉石传说套牌代码功能:卡组文本编码一键导入...

    炉石传说即将到来的最新版本会带来一个全新的功能--套牌导入. 我们很快就能够轻松地通过"套牌导入"功能来复制和分享卡组了. 在构筑卡组时将不需要对着网页或者其他设备来回切换,一张牌 ...

  3. 炉石传说无法登录服务器未响应是什么意思,炉石传说:你还在卡大门无法登陆游戏吗?这些方法也许能帮到你...

    原标题:炉石传说:你还在卡大门无法登陆游戏吗?这些方法也许能帮到你 炉石传说的小伙伴们大家好,今天暗影崛起14.2更新补丁实装后,无法登陆游戏的bug又出现了,并且此次问题面很广,延续时间又很长,你还 ...

  4. 《炉石传说》架构设计赏析(5):卡牌 技能的静态数据组织

    经过前面几次的尝试,我们对炉石的代码已经不陌生了.除了网络机制还没有了解以外,本机的逻辑已经比较熟悉了. 接下来继续向暴雪最NB的技能系统进发,我们的目标是: 分析技能的静态数据描述: 分析技能的运行 ...

  5. 《炉石传说》架构设计赏析(5):卡牌技能的静态数据组织

    经过前面几次的尝试,我们对炉石的代码已经不陌生了.除了网络机制还没有了解以外,本机的逻辑已经比较熟悉了. 接下来继续向暴雪最NB的技能系统进发,我们的目标是: 分析技能的静态数据描述: 分析技能的运行 ...

  6. 《炉石传说》架构设计赏析(4):Asset管理

    话说,经过这段时间的学习和摸索,对于Unity3D的开发思路已经基本清晰了.唯独还剩下一个AssetBundle机制还没有搞透,这个涉及到前期项目的资源规划.资源管理代码的写法,以及自动更新机制的实现 ...

  7. 《炉石传说》架构设计赏析(1):游戏启动流程

    今年的Unity Awards两项大奖颁给了暴雪的<炉石传说>,这真是对Unity一个再好不过的宣传了--你看,暴雪都开始用Unity了.大家都知道,目前Unity发布的游戏大多都没有对程 ...

  8. 维伦机器人_炉石传说被忽略的神卡 维伦的恩泽

    前言 昨晚是NEL新年后的第一战,正好有空,就去看了看. 其实给我的第一感觉就是,双方还没有从新年的气氛中回过气来,各种失误相当之多,倒是鱼鱼的点评不错,虽然结结巴巴,但是真心眼光毒,看的准. 昨天感 ...

  9. c语言炉石传说算法设计,CCF-CSP题解 201609-3 炉石传说

    模拟. 注意随从的编号在\(summon\)和\(attack\)随从死亡时都可能改变. #include using namespace std; struct tNode { int attack ...

最新文章

  1. boost源码剖析之:多重回调机制signal(下)
  2. springboot使用mongodb
  3. 如何变得有价值,需要突破问题,提高解决各种问题的能力?
  4. qt5使用触屏 偶尔没响应_戴着手套玩手机!你试过吗?触屏灵敏又保暖,冬天再也不冻手~...
  5. 计算机网络令牌总线在哪一页,计算机网络应用基础综合练习
  6. input type=file accept中可以限制的文件类型
  7. python安装成功之后教程_python安装教程 Pycharm安装详细教程
  8. 三年的php简历_php应聘个人简历模板
  9. web前端设计必备网页特效案例 - 轮播图
  10. sketchup制作模型加载进cesium
  11. __builtin_函数
  12. 问题:TypeError: Descriptors cannot not be created directly.解决方法
  13. Android Preference详解
  14. 在线YAML转Properties工具
  15. NPN三极管电平反向电路
  16. CANoe.DiVa操作指南-Pre-condition测试环境配置
  17. 吃烧烤之命令模式学习笔记[C++版] 1
  18. Http 协议建立连接的方式
  19. Win10+OpenCV无法正常读取USB摄像头数据解决方案
  20. 2022-2028全球与中国工业缝纫机市场现状及未来发展趋势

热门文章

  1. OpenCV每日函数 计算摄影模块(1) 图像修复算法 inpaint函数
  2. OpenCV4.5.5学习笔记(十七):分水岭算法watershed(),图像修补inpaint()
  3. 线性代数导论17——正交矩阵和Gram-Schmidt正交化
  4. 蓝桥杯成绩公布——大一零基础如何三个月混到省一?
  5. 硒鼓带不带芯片区别_硒鼓芯片的价格为什么相差悬殊?
  6. Unity 模拟鼠标点击操作
  7. FCOS网络总体流程
  8. 轨道交通建设水准数据的处理流程及说明
  9. 安防天下4——硬盘录像机DVR技术
  10. mc经常闪退是java有问题_【疑问】求大神回答,mc闪退,提供崩溃报告