2.2 法力池的创建和视觉特效———自制卡牌游戏之旅


素材来源:影之诗国服大百科

内容简介:本篇主要介绍法力池的创建以及如何实现视觉特效


一、实现效果

在大多数卡牌游戏中,都有法力值的设定:

  1. 分为最大法力值,和当前回合可用法力值。
  2. 最大法力值每回合都会增加1点,直到10点为止。
  3. 使用卡牌消耗相应当前回合法力值,每回合会回复所有。

于是可以实现如下效果
在这里插入图片描述

二、实现过程

1. 想法

要实现该效果,分析需要的对象:

  1. 存放法力值的框(ManaPool)
  2. 法力值(Ball)
  3. 显示法力值的文字(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
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值