Unity3D UI Text得分数字增加的实例代码

 更新时间:2021年04月10日 10:38:57   作者:大可iii  
这篇文章主要介绍了Unity3D UI Text得分数字增加方式,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧

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());
    }
 

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。如有错误或未考虑完全的地方,望不吝赐教。

相关文章

  • C#模式画刷HatchBrush用法实例

    C#模式画刷HatchBrush用法实例

    这篇文章主要介绍了C#模式画刷HatchBrush用法,实例分析了模式画刷HatchBrush绘图的相关技巧,需要的朋友可以参考下
    2015-06-06
  • C#实现12306自动登录的方法

    C#实现12306自动登录的方法

    本文介绍了C#实现12306自动登录的方法,主要方法是捕获参数和url并补充参数,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2015-07-07
  • C#给Word不同页面设置不同背景

    C#给Word不同页面设置不同背景

    这篇文章主要介绍了C#给Word不同页面设置不同背景,文章图文讲解的很清晰,有对于这方面不懂得同学可以学习下
    2021-02-02
  • C#编写发送邮件组件

    C#编写发送邮件组件

    本文给大家分享的是使用C#编写的发送邮件的组件,非常的简单实用,有需要的小伙伴可以参考下。
    2015-06-06
  • C# 输出参数out问题

    C# 输出参数out问题

    这篇文章主要介绍了C# 输出参数out问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-02-02
  • C# WebClient类用法实例

    C# WebClient类用法实例

    这篇文章主要介绍了C# WebClient类用法实例,本文讲解使用WebClient下载文件、OpenWriter打开一个流使用指定的方法将数据写入到uri以及上传文件示例,需要的朋友可以参考下
    2015-07-07
  • C#中如何分割字符串

    C#中如何分割字符串

    这篇文章主要介绍了C#中如何分割字符串问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-02-02
  • Unity shader实现移动端模拟深度水效果

    Unity shader实现移动端模拟深度水效果

    这篇文章主要为大家详细介绍了Unity shader实现移动端模拟深度水效果,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-05-05
  • C#中的队列Queue<T>与堆栈Stack<T>

    C#中的队列Queue<T>与堆栈Stack<T>

    这篇文章介绍了C#中的队列Queue<T>与堆栈Stack<T>,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-05-05
  • 解析XPath语法之在C#中使用XPath的示例详解

    解析XPath语法之在C#中使用XPath的示例详解

    本篇文章是对在C#中使用XPath的示例进行了详细的分析介绍,需要的朋友参考下
    2013-05-05

最新评论