文章目录

  • 一、前言
  • 二、使用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. Silverlight:如何在程序中获取网站的根目录
  2. java工程师去字节飞书可以,字节跳动飞书Java后端开发暑假实习一面(过了)
  3. php 访问 sharepoint列表,SharePoint—用REST方式访问列表
  4. Go Concurrency Patterns: Pipelines and cancellation
  5. python 全局变量_python程序中用类变量代替global 定义全局变量
  6. JNIWrapper控件发布v3.8.4版本
  7. leetcode 374. Guess Number Higher or Lower 、375. Guess Number Higher or Lower II
  8. 【数学建模】基于matlab模拟十字路口车辆通行【含Matlab源码 1106期】
  9. 模式识别实验报告--贝叶斯分类器设计
  10. vbs脚本巡检windows主机
  11. QPSK、16QAM、64QAM信号的散点图、正交、同相分量波形图
  12. 如何通过里程碑控制项目进度
  13. UVa12235: Help Bubu 题解
  14. Android 手机和盒子遥控器
  15. 世界上最有名和哲理的17句话
  16. 使用poi,word转pdf后,表格文字靠下
  17. 2020年Java就业前景和就业方向分析!
  18. ios微信多开教程(最简单实用 亲测可用)
  19. java, Statement类的介绍
  20. 手机APP开发之MIT Appinventor详细实战教程(十),标准登陆界面的逻辑设计和数据库的有效使用

热门文章

  1. 三杯水问题 算法分析、设计与实现(Java)
  2. 阿里RocketMQ如何解决消息的顺序和重复两大硬伤
  3. 花钱买快乐 文 / 弗雷德里.美娜德
  4. 《区块链底层设计Java实战》之第三章密码学
  5. 百度云OSS云存储上传及获取
  6. 信息系统项目咨询和实施方法
  7. 1.什么是Javascript
  8. espeak 中文语音包_从零开始搭建一个语音对话机器人
  9. oracle 与mysql查询_oracle与mysql分页查询语句sql
  10. shell各种截取*(要你想要的)