【游戏开发实战】使用Unity制作水果消消乐游戏教程(八):游戏得分加分效果

一、前言

嗨,大家好,我是新发。下班坐地铁的时候,好几次看到其他人在玩消消乐,既然大家都这么喜欢玩,那我就写个Unity制作水果消消乐的教程吧。

我会根据内容点分成好几篇文章来讲,希望对想学Unity的同学有所帮助,创作不易,喜欢的同学欢迎关注、点赞、收藏,文章目录如下:
第一篇:生成冰块阵列
第二篇:随机生成水果
第三篇:水果拖动与交换逻辑
第四篇:使用DOTween插件实现水果的滑动效果
第五篇:水果的消除检测,实现消除效果
第六篇:水果下落与新水果生成
第七篇:水果消除特效
第八篇:游戏得分加分效果
第九篇:使用UGUI显示游戏UI

游戏运行效果如下:
在这里插入图片描述
最终的Demo工程已上传到GitHub,感兴趣的同学可以自行下载下来学习。
GitHub地址:https://github.com/linxinfa/UnityXiaoXiaoLeDemo
注:我使用的Unity版本为2020.1.14f1c1
在这里插入图片描述


本篇讲游戏得分加分效果,本篇的效果:
在这里插入图片描述

二、使用TextMeshPro显示得分

使用UGUIText可以显示得分,不过我这里想顺便介绍一下TextMeshPro,所以我决定使用TextMeshPro来显示得分。
关于TextMeshPro的教程可以参见我之前写的这篇文章:https://blog.csdn.net/linxinfa/article/details/113525008
这里我就简单讲下制作流程。

1、导入TTF字体到工程中

导入一个TTF格式的字体库到Unity工程中。
在这里插入图片描述
如下:
在这里插入图片描述

2、创建字源txt文件

创建一个character.txt文本文件。
在这里插入图片描述
里面写入我们需要用到的字符,因为我们只需要数字,所以只需要0123456789
在这里插入图片描述

3、生成字体asset

在这里插入图片描述
设置Source Font File为我们刚刚导入的TTF字体,设置Character SetCharacters from FIle,选择Character File为我们刚刚创建的character.txt文件,最后点击Generate Font Atlas
在这里插入图片描述
生成后,再点击Save按钮。
在这里插入图片描述
保存字体assetFonts文件夹中。
在这里插入图片描述
这样,字体asset就制作好了。
在这里插入图片描述

4、制作得分预设

EffectSpawner节点下创建一个空物体,重命名为ScoreEffect
在这里插入图片描述
添加TextMeshPro - Text组件。
在这里插入图片描述
设置Font Asset为我们刚刚生成的字体asset
在这里插入图片描述
Text Input输入要显示的数字,调整字体大小和对齐方式。
在这里插入图片描述
这样,我们就可以在场景中看到数字了。
在这里插入图片描述
加个描边效果。
在这里插入图片描述
效果如下:
在这里插入图片描述
ScoreEffect保存为预设。
在这里插入图片描述

三、得分数字动画

ScoreEffect目前还是一个静态的文本显示,不够生动,我们给它制作一个出现和消失的动画。
点击菜单Window - Animation - Animation,打开动画窗口。
在这里插入图片描述
选中ScoreEffect,然后点击Animation窗口中的Create按钮。
在这里插入图片描述
保存动画文件到Animations文件夹中。
在这里插入图片描述
做一个出现和消失的效果。
在这里插入图片描述
在最后一帧加上帧事件,填写响应函数为OnAnimationEventString参数为finish
在这里插入图片描述
ScoreEffect挂上AnimationEvent组件。
在这里插入图片描述
AnimationEvent组件在上一篇已经讲过,它代码如下:

// AnimationEvent.cs 

using UnityEngine;
using System;

public class AnimationEvent : MonoBehaviour
{
    /// <summary>
    /// 委托
    /// </summary>
    public Action<string> aniEventCb;

    /// <summary>
    /// 动画帧事件响应函数
    /// </summary>
    public void OnAnimationEvent(string str)
    {
        // 调用委托
        if (null != aniEventCb)
            aniEventCb(str);
    }
}

四、得分代码

有了得分资源,现在就是用代码来显示这个得分效果了。
我们依然在EffectSpawner.cs中添加逻辑。
在这里插入图片描述
依然使用对象池的方式来显示。

// EffectSpawner.cs

// ...


/// <summary>
/// 得分特效预设
/// </summary>
public GameObject scoreEffectPrefab;

/// <summary>
/// 得分效果对象池
/// </summary>
private Queue<TextMeshPro> m_scoreEffectPool = new Queue<TextMeshPro>();

private void OnFruitDisappear(params object[] args)
{
    var pos = (Vector3)args[0];
    ShowDisappearEffect(pos);
    // 先写死加10分
    ShowScoreEffect(pos, 10);
}

public void ShowScoreEffect(Vector3 pos, int addScore)
{
    TextMeshPro textMesh = null;
    if (m_scoreEffectPool.Count > 0)
        textMesh = m_scoreEffectPool.Dequeue();
    else
    {
        var obj = Instantiate(scoreEffectPrefab);
        obj.transform.SetParent(m_effectRoot, false);
        textMesh = obj.GetComponent<TextMeshPro>();
        var aniEvent = obj.GetComponent<AnimationEvent>();
        aniEvent.aniEventCb = (str) =>
        {
            if ("finish" == str)
            {
                obj.SetActive(false);
                m_scoreEffectPool.Enqueue(textMesh);
            }
        };
    }
    textMesh.gameObject.SetActive(true);
    textMesh.transform.position = pos;
    textMesh.text = addScore.ToString();
}

最后,记得给EffectSpawner赋值ScoreEffect预设对象。
在这里插入图片描述

五、运行测试

运行Unity,测试效果如下:
在这里插入图片描述
下一篇讲使用UGUI显示游戏UI
[点击进入下一篇]

使用Unity开发即时战略游戏教程需要按照以下步骤进行: 1. 游戏设计:首先,要明确游戏的基本设计,包括游戏的主题、背景故事、玩法规则和目标等。确定游戏的核心玩法和要素,以便后续的开发过程中有一个明确的方向。 2. 场景建模:使用Unity的场景编辑器创建游戏的场景。设置地形、建筑、道路等环境元素,并根据游戏设计的要求放置相应的游戏资源。 3. 单位与建筑物模型:设计并制作游戏中的单位和建筑物模型。使用3D建模软件(如Blender),创建单位和建筑物的模型,并导入到Unity中进行进一步的编辑和调整。 4. 游戏逻辑编程:使用C#或Unity的脚本语言编写游戏的逻辑代码。根据游戏设计的要求,实现单位的移动、攻击、AI控制等功能,并对玩家的操作出相应的响应。 5. UI设计:设计游戏的用户界面(UI),包括游戏菜单、按键、状态栏等。使用Unity的UI设计工具创建UI元素,并编写脚本以实现UI与游戏逻辑之间的交互。 6. 动画和特效:为游戏中的单位、建筑物和效果设计动画和特效。使用Unity提供的动画编辑器创建动画,并使用粒子系统实现特效效果,以增强游戏的可玩性和视觉效果。 7. 游戏测试与优化:在开发过程中进行游戏的测试,发现和修复bug,并对游戏进行性能优化,以确保游戏能够在各种设备上流畅运行。 8. 发布与营销:准备好游戏的发布版本,并选择合适的发布渠道。可以通过Steam、App Store等平台发布游戏,并进行必要的市场推广和宣传活动,以吸引更多的玩家。 以上是使用Unity开发即时战略游戏的基本步骤和流程。在实际开发过程中,还需要不断学习和掌握Unity的各种功能和技术,以提升游戏的质量和用户体验。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

林新发

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值