《炉石传说》架构设计赏析(6):卡牌 技能数据的运行时组织
前一篇文章我们看到了《炉石传说》的核心卡牌数据的存储,今天我们继续探索卡牌&技能。
主要的类
- 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()来进行资源加载;
卡牌&技能的加载流程
《炉石传说》架构设计赏析(6):卡牌 技能数据的运行时组织相关推荐
- 炉石传说职业梯队和强势卡牌推荐
炉石传说作为的一款卡牌游戏,其故事以魔兽争霸的世界观为背景.从纳克萨玛斯到探险者协会再到如今的安戈洛和冰封王座版本,炉石传说的卡牌库发生了巨大的改变,特别是随着近两个版本中超模牌和DK的增加,竞技场的 ...
- c语言炉石传说模仿代码项目,炉石传说套牌代码功能:卡组文本编码一键导入...
炉石传说即将到来的最新版本会带来一个全新的功能--套牌导入. 我们很快就能够轻松地通过"套牌导入"功能来复制和分享卡组了. 在构筑卡组时将不需要对着网页或者其他设备来回切换,一张牌 ...
- 炉石传说无法登录服务器未响应是什么意思,炉石传说:你还在卡大门无法登陆游戏吗?这些方法也许能帮到你...
原标题:炉石传说:你还在卡大门无法登陆游戏吗?这些方法也许能帮到你 炉石传说的小伙伴们大家好,今天暗影崛起14.2更新补丁实装后,无法登陆游戏的bug又出现了,并且此次问题面很广,延续时间又很长,你还 ...
- 《炉石传说》架构设计赏析(5):卡牌 技能的静态数据组织
经过前面几次的尝试,我们对炉石的代码已经不陌生了.除了网络机制还没有了解以外,本机的逻辑已经比较熟悉了. 接下来继续向暴雪最NB的技能系统进发,我们的目标是: 分析技能的静态数据描述: 分析技能的运行 ...
- 《炉石传说》架构设计赏析(5):卡牌技能的静态数据组织
经过前面几次的尝试,我们对炉石的代码已经不陌生了.除了网络机制还没有了解以外,本机的逻辑已经比较熟悉了. 接下来继续向暴雪最NB的技能系统进发,我们的目标是: 分析技能的静态数据描述: 分析技能的运行 ...
- 《炉石传说》架构设计赏析(4):Asset管理
话说,经过这段时间的学习和摸索,对于Unity3D的开发思路已经基本清晰了.唯独还剩下一个AssetBundle机制还没有搞透,这个涉及到前期项目的资源规划.资源管理代码的写法,以及自动更新机制的实现 ...
- 《炉石传说》架构设计赏析(1):游戏启动流程
今年的Unity Awards两项大奖颁给了暴雪的<炉石传说>,这真是对Unity一个再好不过的宣传了--你看,暴雪都开始用Unity了.大家都知道,目前Unity发布的游戏大多都没有对程 ...
- 维伦机器人_炉石传说被忽略的神卡 维伦的恩泽
前言 昨晚是NEL新年后的第一战,正好有空,就去看了看. 其实给我的第一感觉就是,双方还没有从新年的气氛中回过气来,各种失误相当之多,倒是鱼鱼的点评不错,虽然结结巴巴,但是真心眼光毒,看的准. 昨天感 ...
- c语言炉石传说算法设计,CCF-CSP题解 201609-3 炉石传说
模拟. 注意随从的编号在\(summon\)和\(attack\)随从死亡时都可能改变. #include using namespace std; struct tNode { int attack ...
最新文章
- boost源码剖析之:多重回调机制signal(下)
- springboot使用mongodb
- 如何变得有价值,需要突破问题,提高解决各种问题的能力?
- qt5使用触屏 偶尔没响应_戴着手套玩手机!你试过吗?触屏灵敏又保暖,冬天再也不冻手~...
- 计算机网络令牌总线在哪一页,计算机网络应用基础综合练习
- input type=file accept中可以限制的文件类型
- python安装成功之后教程_python安装教程 Pycharm安装详细教程
- 三年的php简历_php应聘个人简历模板
- web前端设计必备网页特效案例 - 轮播图
- sketchup制作模型加载进cesium
- __builtin_函数
- 问题:TypeError: Descriptors cannot not be created directly.解决方法
- Android Preference详解
- 在线YAML转Properties工具
- NPN三极管电平反向电路
- CANoe.DiVa操作指南-Pre-condition测试环境配置
- 吃烧烤之命令模式学习笔记[C++版] 1
- Http 协议建立连接的方式
- Win10+OpenCV无法正常读取USB摄像头数据解决方案
- 2022-2028全球与中国工业缝纫机市场现状及未来发展趋势
热门文章
- OpenCV每日函数 计算摄影模块(1) 图像修复算法 inpaint函数
- OpenCV4.5.5学习笔记(十七):分水岭算法watershed(),图像修补inpaint()
- 线性代数导论17——正交矩阵和Gram-Schmidt正交化
- 蓝桥杯成绩公布——大一零基础如何三个月混到省一?
- 硒鼓带不带芯片区别_硒鼓芯片的价格为什么相差悬殊?
- Unity 模拟鼠标点击操作
- FCOS网络总体流程
- 轨道交通建设水准数据的处理流程及说明
- 安防天下4——硬盘录像机DVR技术
- mc经常闪退是java有问题_【疑问】求大神回答,mc闪退,提供崩溃报告