97 lines
4.4 KiB
Markdown
97 lines
4.4 KiB
Markdown
运行游戏,这是类炉石的UI界面
|
||
|
||
![[Pasted image 20240329104807.png]]
|
||
|
||
卡牌的数据逻辑总类,其中包含,打出该卡牌,需要的费用、卡片名称、图片资源名称,卡牌类型、攻击力
|
||
|
||
![[Pasted image 20240329120158.png]]
|
||
|
||
其他的字段,分别是生命值、稀有度;
|
||
SizeType枚举,指的是卡牌所在位置的大小种类;
|
||
|
||
![[Pasted image 20240329120250.png]]
|
||
|
||
后续还有俩枚举,对应的分别是,卡牌对应的游戏业务类型,和稀有度
|
||
|
||
![[Pasted image 20240329120400.png]]
|
||
|
||
游戏业务类型,表现
|
||
|
||
![[Pasted image 20240329120514.png]]
|
||
|
||
![[Pasted image 20240329120502.png]]
|
||
|
||
卡牌使用对象池管理,包含活跃列表,不活跃列表,父类节点,对应加载的预制体,还有卡牌相关的,逻辑种类数组_component;
|
||
初始化函数,对各个声明的变量,完成赋值初始化即可,其中类型数组,是用了不定数量的可变参数params,参考[[params 用法简介]]即可;
|
||
|
||
![[Pasted image 20240329120639.png]]
|
||
|
||
对象池中,创建一个新实体的函数接口,通过Instantiate实例化出来之后,遍历逻辑种类数组,加到这个实体即可
|
||
|
||
![[Pasted image 20240329121551.png]]
|
||
|
||
加载对象的 Spawn 和 卸载对象的 Despwan 逻辑,就是操作_inactiveList和_activeList两个队列容器,如果容器没数据,就调用上述SpawnNew创建新实体即可
|
||
|
||
![[Pasted image 20240329121706.png]]
|
||
|
||
这是卡牌的基类接口,包含卡牌数据模型、卡牌类型、尺寸,和Init初始化函数,还有一个SetRaycastState是用来设置射线检测的
|
||
|
||
![[Pasted image 20240329121856.png]]
|
||
|
||
卡牌的Base逻辑基类,继承自ICard接口,和unity挂载的MonoBehaviour,包含数据模型,卡牌类型,尺寸等获取器;
|
||
还有图片和相关获取器;
|
||
|
||
![[Pasted image 20240329124524.png]]
|
||
|
||
其中各个函数,包含设置是否开启,射线检测;
|
||
从资源目录的Card文件夹,通过spriteName命名,加载对应的图片资源;
|
||
GetIconImage抽象函数,会在继承子类中,完成重写,分别是获取,不同类型卡片的Icon图片节点位置;
|
||
InitRarity就是初始化设置,稀有度图片,而GetRaritySprite抽象函数,是获取不同类型卡牌,对应的稀有度图片,这个也会在继承子类,完成重写;
|
||
InitName就是初始化,卡牌的命名了;
|
||
|
||
![[Pasted image 20240329124733.png]]
|
||
|
||
两个继承子类的重写
|
||
|
||
![[Pasted image 20240329125204.png]]
|
||
|
||
![[Pasted image 20240329125230.png]]
|
||
|
||
MagicCard和MinionCard,这两个子类,都是大卡,只是怪兽卡和魔法卡,这种业务玩法上的类型区别,运行游戏,表现如此
|
||
|
||
![[Pasted image 20240329130302.png]]
|
||
|
||
这是怪兽卡,对应的业务逻辑,除了上述的图片和稀有度函数重写,还有两个初始化函数,分别是攻击力和生命值相关
|
||
|
||
![[Pasted image 20240329130437.png]]
|
||
|
||
这是魔法卡,对应的业务逻辑就相对更简单,只有上述的两个函数重写
|
||
|
||
![[Pasted image 20240329130555.png]]
|
||
|
||
运行游戏,表现上,是这个样式,命名为MiniCard
|
||
|
||
![[Pasted image 20240329130651.png]]
|
||
|
||
对应的逻辑,继承自ICard基类接口,其中声明的变量,包括各个获取器
|
||
|
||
![[Pasted image 20240329130729.png]]
|
||
|
||
其余函数方法,包含设置射线检测,图片赋值,卡牌消耗图片初始化,使用Resources.LoadAll拿到所有的,消耗相关,图片容器,通过cost作为索引,拿到对应的,卡牌消耗图片
|
||
|
||
![[Pasted image 20240329130855.png]]
|
||
|
||
还有一个设置背景图片的函数接口
|
||
|
||
![[Pasted image 20240329141825.png]]
|
||
|
||
卡牌对象池,对应的管理类逻辑,会声明一个_pools字典容器,用字符串作为key,统一管理对象池;
|
||
添加一个对象池的函数是AddPool,也就是通过Resources.Load的资源加载方法,拿到对应的预制体,再new CardPool创建一个新的对象池,以这个对应的预制体名字作为key,加到对象池字典,统一管理即可;
|
||
在Init初始化函数中,新增一个Cache实体,用来作为对象池的父节点,再调用AddPool方法,新增3个对象池统一管理,三种类型的卡牌即可;
|
||
当前,其中不定长参数component都是传递了3个参数,分别是卡牌类型,卡牌拖曳逻辑,卡牌区域触发逻辑;
|
||
|
||
![[Pasted image 20240329131547.png]]
|
||
|
||
对象池管理类,还会有同名函数,分别调用,对象池的加载和卸载逻辑
|
||
|
||
![[Pasted image 20240329140552.png]] |