Unity3D UI Text得分数字增加的实例代码
作者:大可iii 发布时间:2021-11-13 21:03:10
Unity3D UGUI Text得分数字增加 代码
一、首先在Hierarchy中创建Text,并绑定脚本。
using UnityEngine;
using System.Collections;
using UnityEngine.UI; **//导入资源库**
public class Score : MonoBehaviour {
public static Text txt; **//定义静态变量名以用于其他脚本内的引用**
public static float x = 0;
void Start ()
{
txt = GameObject.Find ("Text").GetComponent<Text> ();
}
}
二、在确定变量名指定的组建后,对得分时情况进行判断。
这里进入判断绑定刚体是否碰撞的脚本。
using UnityEngine;
using System.Collections;
public class collision2 : MonoBehaviour {
public GameObject bullet;
void OnCollisionEnter(Collision col) **//当刚体碰撞开始时**
{
if (col.gameObject.name.Equals ("Bullet(Clone)"))
{
Instantiate (bullet,col.transform.position,Quaternion.identity);
Destroy(col.gameObject);
Score.x += 1; **//刚体碰撞结束后得分加1**
Score.txt.text = "Score : " + Score.x; //在text文本中显示Score : x
}
}
总结:
这里的代码示例是以制定刚体碰撞的开始时,进行得分判断。当Bullet(Clone)与脚本绑定的刚体碰撞,便得分数 X+1 ,并在Score脚本中的txt中加上转换成文本类型后的X。
补充:Unity3D 数字逐渐增加,一个数字动态变化到另一个数字(使用协程)
首先实现上述功能,需要使用“协程”这个功能。
协程
协程:控制代码等到特定的时机后再执行后续步骤.
先看Unity3D的函数执行顺序图
官网链接:https://docs.unity3d.com/Manual/ExecutionOrder.html
以上协程函数定义:(yield 开头的便是)
yield null:协程将在下一帧所有脚本的Update执行之后,再继续执行.
yield WaitForSeconds:协程在延迟指定时间,且当前帧所有脚本的 Update全都执行结束后才继续执行.
yield WaitForFixedUpdate:协程在所有脚本的FixedUpdate执行之后,再继续执行.
yield WWW:协程在WWW下载资源完成后,再继续执行.
yield StartCoroutine:协程在指定协程执行结束后,再继续执行.
WaitForSecondsRealtime:与WaitForSeconds类似,但不受时间缩放影响.
WaitWhile:当返回条件为假时才执行后续步骤.
使用方法:
void Start () {
StartCoroutine(A());
}
IEnumerator A() //加粗的必须要写,函数名自己定义
{
//yield return new WaitForSeconds(0.1f); //这里可以用上述的函数
StopCoroutine(A());
}
PS:注意如果需要停停止其中某个协程,可使用StopCoroutine。但在使用时,你需要注意一点,停止协程的方式要与开启协程的方式一致。StopCoroutine(“A”)必须与StartCoroutine(“A”)成对使用,与StartCoroutine(A())一起使用则完全无效。
逐渐增加的实现
首先需要在unity世界里增加一个text,然后text加如下脚本
代码如下:
int max; //最终值
int min; //初始值
int result = 0;
public int change_speed = 5; //加的次数
// Use this for initialization
void Start ()
{
StartCoroutine(Change());
}
IEnumerator Change()
{
int delta = (max - min) / change_speed; //delta为速度,每次加的数大小
result = min;
for(int i = 0;i<change_speed;i++)
{
result += delta;
this.GetComponent<Text>().text = result.ToString();
yield return new WaitForSeconds(0.1f); //每 0.1s 加一次
}
this.GetComponent<Text>().text = max.ToString();
StopCoroutine(Change());
}
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。如有错误或未考虑完全的地方,望不吝赐教。
来源:https://blog.csdn.net/weixin_43778515/article/details/84385701


猜你喜欢
- 一、介绍Mesh类:通过脚本创建或是获取网格的类,网格包含多个顶点和三角形数组。顶点信息包含坐标和所在面的法线。unity中3D的世界的所有
- C#如何安全、高效地玩转任何种类的内存之Span的本质一、what - 痛点是什么?回答这个问题前,先总结一下如何用C#操作任何类型的内存:
- jar与warSpring Boot项目开发完成后,需要以jar或war的方式将项目打包部署到测试开发环境。jar即Java Archive
- java中方法参数传递方式是按值传递。如果参数是基本类型,传递的是基本类型的字面量值的拷贝。如果参数是引用类型,传递的是该参量所引用的对象在
- 逆转交替合并两个链表,即从一个链表的尾指针指向另一个链表的尾指针,依次逆转交替进行合并。下面就通过实例来详细的介绍该逆转交替合并两个链表的思
- 通过路径从磁盘直接读取图片这段时间在做Springboot和Vue的例子,读取图片给出路径直接可以读,太方便了,一直么有搞懂为什么。后面看到
- java 闰年判断前言:给定一个年份,判断这一年是不是闰年。当以下情况之一满足时,这一年是闰年:1. 年份是4的倍数而不是100的倍数;2.
- 引言依照领导要求区分了两种压测模式:固定次数压测和固定时间压测。此前一直沿用的都是固定次数,所以本次第二版剥离了固定次数的模式增加了固定时间
- 在进行winform开发过程中有时候会需要关闭其他程序或者关闭进程,以前写过一篇相关介绍的文章,今天有同事问起来,于是在次翻出来和大家分享一
- 简述每个项目从新建开始我们或多或少都会导入各种依赖库,如果项目中只有一个module的话,对于依赖库版本的管理很容易,但是多个module的
- 做Android开发的程序员必须知道android客户端应该如何与服务端进行交互,这里主要介绍的是使用json数据进行交互。服务端从数据库查
- 本文纯干货,贴上PDF文档操作类C#代码,需要添加iTextSharp.dll引用才可以正常通过编译。废话不多说了,直接给大家贴代码了。代码
- 网上关于java图片格式内容的文章不是很多,也不是很完整,小编搜集了三段java图片格式转换代码,分享给大家:第一段:java图片格式转换代
- 1,编写一个程序,读取文件test.txt的内容并在控制台输出。如果源文件不存在,则显示相应的错误信息。 package src;impor
- 目录前言1、创建一个控制台应用程序2、编写测试代码并分析3、总结前言对于C#里面的Foreach学过 语言的人都知道怎么用,但是其原理相信很
- Bezier Curve算法是根据参数曲线方程来得到光滑曲线的一种算法,曲线方程的参数由控制点决定。其本质是由调和函数根据控制点插值而成,其
- 目录首先看效果图:使用方法:1、普通场景使用2、在DataBinding中使用首先看效果图:整词高亮:分词高亮:下面贴上我封的方法 /**
- 本文实例讲述了C#操作session的类。分享给大家供大家参考。具体分析如下:这个C#类对session操作进行了再次封装,可以大大简化se
- " 梧桐更兼细雨,到黄昏、点点滴滴。"C语言朱武大战数据结构专栏C语言植物大战数据结构快速排序图文示例C语言植物大战数据
- 本文实例讲述了Android编程之selector下设置背景属性值的方法。分享给大家供大家参考,具体如下:在res/drawable文件夹新