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
![](https://www.aspxhome.com/images/zang.png)
![](https://www.aspxhome.com/images/jiucuo.png)
猜你喜欢
- 题目:给定一个如下图所示的数字三角形,从顶部出发,在每一结点可以选择移动至其左下方的结点或移动至其右下方的结点,一直走到底层,要求找出一条路
- 今天没有继续学习新知识点,画出了一个随鼠标画出的 图形,知识点全都是之前学的,话不多说,先上图:代码部分: // ope
- 一、将已经编译后的java中Class文件进行打包;打包命令JAR 如:将某目录下的所有class文件夹全部进行打包处理;使用的命令:jar
- 使用场景EntityListeners在jpa中使用,如果你是mybatis是不可以用的它的意义对实体属性变化的跟踪,它提供了保存前,保存后
- 上篇文章中介绍了聊天功能,这里介绍通讯录是如何实现的。首先要加载公司的所有部门,树形结构,然后点击进入部门的人员列表,点击人员能查看详细信息
- 下载:DownLoaderTask.javapackage com.johnny.testzipanddownload;import jav
- java String的深入理解一、Java内存模型 按照官方的说法:Java 虚拟机具有一个堆,堆是运行时数据区域,所有类实例和
- 最近开发过程中遇到了一个问题,之前没有太注意,这里记录一下。我用的SpringBoot版本是2.0.5,在跟前端联调的时候,有个请求因为用户
- 一个Java程序的执行要经过编译和执行(解释)这两个步骤,同时Java又是面向对象的编程语言。当子类和父类存在同一个方法,子类重写了父类的方
- 流程分析首先,使用mybatis的时候会定义mapper接口的基础包,一般我们会用@MapperScanner这个注解,来看下这个注解&nb
- 1. 你可以讲下进程与线程的区别?为什么要用多线程?进程:进程是程序的一次执行过程,是系统运行程序的基本单位。线程:单个进程中执行中每个任务
- spring中的bean依赖有大体上可以分为两类,共3中形式,下面简单介绍一下。第一类是构造方法中的循环依赖,这种会报错@Servicepu
- 本文实例为大家分享了struts2实现多文件上传的具体代码,供大家参考,具体内容如下首先搭建好struts2的开发环境,导入struts2需
- SpringBoot 项目启动之后执行自定义方法的两种方式在测试配置中心的配置时,想在项目启动成功之后打印配置项,然后需要执行自定义的类一般
- 要说,这也是一个很简单的功能,没必要开一篇博客这么大动干戈。 对于一张知道全路径的照片,如果其路径包含后缀名的话,要取得后缀名,只需要一行代
- 一、什么是方法的重载?方法的重载是指一个类中可以定义多个方法名相同,但参数不同的方法。调用时,会根据不同的参数自动匹配对应的方法。二、构成方
- 1.封装1.介绍封装是指把抽象出的属性和方法封装在一起,数据被保护在内部,程序的其他部分只能通过被授权的方法,才能对数据操作。2.封装的理解
- 1. 概述官方JavaDocsApi: javax.swing.JComboBoxJComboBox,下拉列表框。JComboBox以下列列
- 一、什么是桥接模式:桥接,顾名思义,就是用来连接两个部分,使得两个部分可以互相通讯,桥接模式的作用就是为被分离的抽象部分和实现部分搭桥。在现
- 题目:求100之内的素数方法一:package airthmatic;public class demo8 { /** * 素数是指因数只有