【游戏开发实战】使用Unity制作水果消消乐游戏教程(八):游戏得分加分效果
文章目录
- 一、前言
- 二、使用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显示得分
使用UGUI
的Text
可以显示得分,不过我这里想顺便介绍一下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 Set
为Characters from FIle
,选择Character File
为我们刚刚创建的character.txt
文件,最后点击Generate Font Atlas
。
生成后,再点击Save
按钮。
保存字体asset
到Fonts
文件夹中。
这样,字体asset
就制作好了。
4、制作得分预设
在EffectSpawner
节点下创建一个空物体,重命名为ScoreEffect
。
添加TextMeshPro - Text
组件。
设置Font Asset
为我们刚刚生成的字体asset
。
在Text Input
输入要显示的数字,调整字体大小和对齐方式。
这样,我们就可以在场景中看到数字了。
加个描边效果。
效果如下:
将ScoreEffect
保存为预设。
三、得分数字动画
ScoreEffect
目前还是一个静态的文本显示,不够生动,我们给它制作一个出现和消失的动画。
点击菜单Window - Animation - Animation
,打开动画窗口。
选中ScoreEffect
,然后点击Animation
窗口中的Create
按钮。
保存动画文件到Animations
文件夹中。
做一个出现和消失的效果。
在最后一帧加上帧事件,填写响应函数为OnAnimationEvent
,String
参数为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制作水果消消乐游戏教程(八):游戏得分加分效果相关推荐
- 【游戏开发实战】Unity从零开发多人视频聊天功能,无聊了就和自己视频聊天(附源码 | Mirror | 多人视频 | 详细教程)
文章目录 一.前言 二.思考问题与解决方案 1.思考问题 2.解决方案 2.1.Unity中如何开启摄像头并对图像进行采样 2.2.图像如何中转给其他客户端 2.3.如何实现清晰度切换 2.4.客户端 ...
- 【游戏开发实战】Unity手游第一人称视角,双摇杆控制,FPS射击游戏Demo(教程 | 含Demo工程源码)
文章目录 一.前言 二.实现方案 1.无主之地,第一人称视角 2.我之前做的摇杆控制 3.第一人称视角 + 摇杆控制 三.开始实战 1.资源获取:Unity AssetStore 2.Low Poly ...
- 【游戏开发实战】Unity使用ShaderGraph制作一个Loading水球(能量球 | UI | 2D | 特效 | URP)
文章目录 一.前言 二.ShaderGraph入门 三.ShaderGraph制作2D Loading水球 1.创建Unlit Shader Graph 2.创建一个圆 3.从下到上填充的效果 4.填 ...
- 【游戏开发实战】Unity使用ShaderGraph配合粒子系统,制作子弹拖尾特效(Fate/stay night金闪闪的大招效果)
文章目录 一.前言 二.实现原理 三.ShaderGraph 四.图片素材 五.结束 一.前言 点关注不迷路,持续输出Unity干货文章. 嗨,大家好,我是新发,之前写了一篇文章:<Shader ...
- 【游戏开发实战】Unity UGUI制作雷达图/天赋图/属性图/能力图,因为太怕痛就全点了防御力
文章目录 一.前言 二.最终效果 三.原理 四.具体实现 1.雷达图背景图 2.封装UIPolygon.cs 3.制作预设 4.测试脚本RadarTest.cs 五.运行测试 六.结束语 七.附录:U ...
- 【游戏开发实战】Unity快速搭建体素风格关卡地图(Tile3D | 我的世界 | Voxel | 场景 | 编辑器)
文章目录 一.前言 二.本文最终效果 三.MAST工具基本操作 1.工具下载:Modular Asset Staging Tool(MAST) 2.导入工具:Import 3.创建场景:Scene 4 ...
- 【游戏开发实战】Unity老工程师开始搞Laya了,不想看官方文档,那就看我的教程吧(Laya2.12.0版本 | 案例 | 入门 | 教程)
文章目录 一.前言 二.我做的Laya案例集合工程 三.LayaAir IDE下载 四.Hello World工程 1.新建空项目 2.新建场景:HelloWorld.scene 3.创建一个Labe ...
- 【游戏开发实战】Unity粒子在UI界面中的裁切、蒙版、层级问题的解决(ScrollView裁切、Mask蒙版、UI粒子层级关系)
文章目录 一.前言 二.最终效果 三.使用方法 1.引入插件dll 2.制作粒子特效 3.粒子材质球使用UIAdditive.shader 4.将粒子摆放在UI节点下 5.挂UIParticle组件 ...
- 【游戏开发实战】Unity使用ParticleSystem粒子系统模拟药水在血管中流动(粒子碰撞)
文章目录 一.前言 二.最终效果 三.制作过程 1.导入血管模型 2.血管Shader 3.血管材质球 4.添加碰撞体 5.药水粒子 四.测试效果 五.结束语 一.前言 点关注不迷路,持续输出Unit ...
- 【游戏开发实战】Unity 2D游戏物理运动曲线轨迹预测,以愤怒的小鸟为例,轨迹曲线云团圈圈
文章目录 一.前言 二.思考分析 三.场景搭建 1.导入图片素材 2.鸟预设 3.地面环境 4.曲线的点预设 5.预览效果 四.代码 1.鸟脚本:Bird.cs 2.曲线预测器:Trajectory. ...
最新文章
- Silverlight:如何在程序中获取网站的根目录
- java工程师去字节飞书可以,字节跳动飞书Java后端开发暑假实习一面(过了)
- php 访问 sharepoint列表,SharePoint—用REST方式访问列表
- Go Concurrency Patterns: Pipelines and cancellation
- python 全局变量_python程序中用类变量代替global 定义全局变量
- JNIWrapper控件发布v3.8.4版本
- leetcode 374. Guess Number Higher or Lower 、375. Guess Number Higher or Lower II
- 【数学建模】基于matlab模拟十字路口车辆通行【含Matlab源码 1106期】
- 模式识别实验报告--贝叶斯分类器设计
- vbs脚本巡检windows主机
- QPSK、16QAM、64QAM信号的散点图、正交、同相分量波形图
- 如何通过里程碑控制项目进度
- UVa12235: Help Bubu 题解
- Android 手机和盒子遥控器
- 世界上最有名和哲理的17句话
- 使用poi,word转pdf后,表格文字靠下
- 2020年Java就业前景和就业方向分析!
- ios微信多开教程(最简单实用 亲测可用)
- java, Statement类的介绍
- 手机APP开发之MIT Appinventor详细实战教程(十),标准登陆界面的逻辑设计和数据库的有效使用