文章目录
素材来源:影之诗国服大百科
内容简介:本篇主要介绍法力池的创建以及如何实现视觉特效
一、实现效果
在大多数卡牌游戏中,都有法力值的设定:
- 分为最大法力值,和当前回合可用法力值。
- 最大法力值每回合都会增加1点,直到10点为止。
- 使用卡牌消耗相应当前回合法力值,每回合会回复所有。
于是可以实现如下效果
二、实现过程
1. 想法
要实现该效果,分析需要的对象:
- 存放法力值的框(ManaPool)
- 法力值(Ball)
- 显示法力值的文字(ManaIcon)
2. 创建对象
① 创建ManaPool对象,并在其之下创建Canvas,将其调整到世界坐标。
② 在Canvas下创建Panel改变背景图片,创建表示法力值的文字
③ 创建Manas和Ball(用来放置法力球)
给Ball添加法力球图片
给Manas添加自动布局组件
将Child Alignment改为Middle Left
④ 将Ball对象复制到10个,最后效果为
⑤ 给ManaPool添加控制脚本ManaPool.cs
3. 编写脚本ManaPool.cs
主要需要改变的值为两个:最大法力值
、本回合可用法力值
。
关于法力球的显示效果,可以通过更改对象的RGBA来实现,即分为:clear(不显示)、gray(不可用)、white(可用)。
可以用get、set访问器来操作需要改变的两个值。
① get、set访问器
可以用get、set访问器来对值赋值
、取值
操作时进行逻辑判断等操作
-
1.get{}
get 访问器,用于获取属性的值,需要在 get 语句最后使用 return 关键字返回一个与属性数据类型相兼容的值。
若在属性定义中省略了该访问器,则不能在其他类中获取私有类型的字段值,因此也称为只写属性。
-
2.set{}
set 访问器用于设置字段的值,这里需要使用一个特殊的值 value,它就是给字段赋的值。
在 set 访问器省略后无法在其他类中给字段赋值,因此也称为只读属性。
通常属性名的命名使用的是 Pascal 命名法,单词的首字母大写,如果是由多个单词构成,每个单词的首字母大写。
由于属性都是针对某个字段赋值的,因此属性的名称通常是将字段中每个单词的首字母大写。例如定义了一个名为 name 的字段,属性名则为 Name。
② 最大法力值
设置int型变量
private int totalCrystals; // 总法力值
取值时,可以直接返回该值:
public int TotalCrystals
{
...
get{
return totalCrystals; }
...
}
赋值时,需要判断法力值是否超过的临界值(可以用法力球对象的最大数量来表示):
set{
//Debug.Log("Changed total mana to: " + value);
if (value > Crystals.Length) // 如果设置的法力值超过规定上限,则设置为上限
totalCrystals = Crystals.Length;
else if (value < 0) // 如果设置的法力值低于0,则设置为0
totalCrystals = 0