文章目录

  • 一、前言
  • 二、使用TextMeshPro显示得分
    • 1、导入TTF字体到工程中
    • 2、创建字源txt文件
    • 3、生成字体asset
    • 4、制作得分预设
  • 三、得分数字动画
  • 四、得分代码
  • 五、运行测试

一、前言

嗨,大家好,我是新发。下班坐地铁的时候,好几次看到其他人在玩消消乐,既然大家都这么喜欢玩,那我就写个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. 【游戏开发实战】Unity从零开发多人视频聊天功能,无聊了就和自己视频聊天(附源码 | Mirror | 多人视频 | 详细教程)

    文章目录 一.前言 二.思考问题与解决方案 1.思考问题 2.解决方案 2.1.Unity中如何开启摄像头并对图像进行采样 2.2.图像如何中转给其他客户端 2.3.如何实现清晰度切换 2.4.客户端 ...

  2. 【游戏开发实战】Unity手游第一人称视角,双摇杆控制,FPS射击游戏Demo(教程 | 含Demo工程源码)

    文章目录 一.前言 二.实现方案 1.无主之地,第一人称视角 2.我之前做的摇杆控制 3.第一人称视角 + 摇杆控制 三.开始实战 1.资源获取:Unity AssetStore 2.Low Poly ...

  3. 【游戏开发实战】Unity使用ShaderGraph制作一个Loading水球(能量球 | UI | 2D | 特效 | URP)

    文章目录 一.前言 二.ShaderGraph入门 三.ShaderGraph制作2D Loading水球 1.创建Unlit Shader Graph 2.创建一个圆 3.从下到上填充的效果 4.填 ...

  4. 【游戏开发实战】Unity使用ShaderGraph配合粒子系统,制作子弹拖尾特效(Fate/stay night金闪闪的大招效果)

    文章目录 一.前言 二.实现原理 三.ShaderGraph 四.图片素材 五.结束 一.前言 点关注不迷路,持续输出Unity干货文章. 嗨,大家好,我是新发,之前写了一篇文章:<Shader ...

  5. 【游戏开发实战】Unity UGUI制作雷达图/天赋图/属性图/能力图,因为太怕痛就全点了防御力

    文章目录 一.前言 二.最终效果 三.原理 四.具体实现 1.雷达图背景图 2.封装UIPolygon.cs 3.制作预设 4.测试脚本RadarTest.cs 五.运行测试 六.结束语 七.附录:U ...

  6. 【游戏开发实战】Unity快速搭建体素风格关卡地图(Tile3D | 我的世界 | Voxel | 场景 | 编辑器)

    文章目录 一.前言 二.本文最终效果 三.MAST工具基本操作 1.工具下载:Modular Asset Staging Tool(MAST) 2.导入工具:Import 3.创建场景:Scene 4 ...

  7. 【游戏开发实战】Unity老工程师开始搞Laya了,不想看官方文档,那就看我的教程吧(Laya2.12.0版本 | 案例 | 入门 | 教程)

    文章目录 一.前言 二.我做的Laya案例集合工程 三.LayaAir IDE下载 四.Hello World工程 1.新建空项目 2.新建场景:HelloWorld.scene 3.创建一个Labe ...

  8. 【游戏开发实战】Unity粒子在UI界面中的裁切、蒙版、层级问题的解决(ScrollView裁切、Mask蒙版、UI粒子层级关系)

    文章目录 一.前言 二.最终效果 三.使用方法 1.引入插件dll 2.制作粒子特效 3.粒子材质球使用UIAdditive.shader 4.将粒子摆放在UI节点下 5.挂UIParticle组件 ...

  9. 【游戏开发实战】Unity使用ParticleSystem粒子系统模拟药水在血管中流动(粒子碰撞)

    文章目录 一.前言 二.最终效果 三.制作过程 1.导入血管模型 2.血管Shader 3.血管材质球 4.添加碰撞体 5.药水粒子 四.测试效果 五.结束语 一.前言 点关注不迷路,持续输出Unit ...

  10. 【游戏开发实战】Unity 2D游戏物理运动曲线轨迹预测,以愤怒的小鸟为例,轨迹曲线云团圈圈

    文章目录 一.前言 二.思考分析 三.场景搭建 1.导入图片素材 2.鸟预设 3.地面环境 4.曲线的点预设 5.预览效果 四.代码 1.鸟脚本:Bird.cs 2.曲线预测器:Trajectory. ...

最新文章

  1. ubuntu18.04.4 没有声音
  2. 编写java程序的常见问题_Java程序的编写与执行、Java新手常见的问题解决
  3. SideFX Houdini FX中文版
  4. AlphaGo:人工智能与深度学习
  5. 华为交换机MSTP常见问题定位
  6. Linux下Shell脚本运行程序不输出日志到终端
  7. Mac上的文件拖拽增强工具space drop如何使用?
  8. 基于SSM的微信小程序在线学习系统源码【包调试】
  9. 20 Redis 的内存空间存储效率问题
  10. 输入数字转换成英文输出
  11. 入网模组 |合宙Air 202 GPRS模组接入机智云(硬件开发平台)
  12. 数据分析有什么证书吗?多数小伙伴都认可CPDA
  13. 创业三部曲之一――学技术
  14. 服务器2012打开远程端口,Windows Server 2012远程默认端口3389的修改
  15. 从一个文档复制粘贴到另一个文档时把ndnote插入的参考文献也复制过去
  16. C语言三个数比大小(if实例)
  17. 国产化服务器挂载硬盘,国产化笔记 - 国产数据库达梦在国产银河麒麟系统上的安装与使用...
  18. Redis 面试题总结
  19. 物联网管理平台是怎样收费的?
  20. 贵金属行情软件手机版哪个好

热门文章

  1. 中职计算机学业水平考试,学业水平考试下中职计算机教学策略
  2. 2022年03月-电子学会青少年等级考试C语言(一级)真题与解析
  3. #解决方法实测:Edge访问网页显示网络未连接(此时WiFi已连接)
  4. Android | 玩转AppBarLayout,设置scrollFlags滑动属性详解
  5. MFC Windows 程序设计[二十五]之五彩十六宫格(附源码)
  6. 聚划算霸占淘宝“六宫格”
  7. linux的which命令
  8. 微软账户可以和outlook邮箱不一样吗
  9. Zeus源码泄露: 九阴真经现身,从此江湖上血雨腥风
  10. linux操作系统分析 课程,“Linux操作系统”课程分析与项目化改造