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

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

(0)

相关推荐

  • Unity3d 如何更改Button的背景色

    我就废话不多说了,大家还是直接看代码吧~ using UnityEngine; using System.Collections; public class ButtonStyle : MonoBehaviour { public Color _color;//在编辑环境下选择背景色,透明度不能为0 public Texture2D tex; void OnGUI(){GUI.Button(new Rect(0,0,100,100),"tex");Color oldColor = GU

  • Unity3d使用FairyGUI 自定义字体的操作

    最近ui同学使用了一种新字体(锐字锐线怒放黑简) 发现全部切成图片字体 吓死我了 unity3d和fairygui搭配使用字体过程 1.第一步肯定是找美术同学拿他们找来的字体 由于fairygui编辑器用的字体是访问操作系统的字体 所以拿到新字体直接双击安装吧(或者放入操作系统盘内的Windows/Fonts)如下图 2.在fairygui里加个文本 选择字体 就能找到我们添加的字体了 3.接着把字体拷贝到unity3d工程下 存放在Resource\Font(没有可以自己建文件夹)注意这边命名

  • Unity3D实现模型随机切割

    本文实例为大家分享了Unity3D实现模型随机切割的具体代码,供大家参考,具体内容如下 模型切割的效果图如下: 我们都知道,模型是由一个个小三角形面组成的,因此我们不妨将问题简化,先实现个小目标,完成单个三角形的切割,甚至继续细分成求一条线段与某个平面的交点. 三角形与切割平面的位置关系主要有以下三种: 1. 三角形与切割平面有两个交点,一个交点在顶点上,一个交点在边上.这时,原有的三角形将被分成两个三角形,分别为013.042. 2. 三角形与切割平面有两个交点,两个交点都在边上.这时,原有的

  • Unity3d 使用Gizmos画一个圆圈

    Gizmos是场景视图里的一个可视化调试工具. 在做项目过程中.我们常常会用到它,比如:绘制一条射线等. Unity3D 4.2版本号截至.眼下仅仅提供了绘制射线,线段,网格球体,实体球体,网格立方体,实体立方体,图标.GUI纹理,以及摄像机线框. 假设须要绘制一个圆环还须要自己写代码 using UnityEngine; using System; public class HeGizmosCircle : MonoBehaviour { public Transform m_Transfor

  • Unity3D 单例模式和静态类的使用详解

    Unity3D的API提供了很多的功能,但是很多流程还是会自己去封装一下去.当然现在网上也有很多的框架可以去下载使用,但是肯定不会比自己写的用起来顺手. 对于是否需要使用框架的问题上,本人是持肯定态度的,把一些常用方法进行封装,做成一个功能性的框架,可以很大程度上提高代码的效率,维护也方便. 对于网络上很多教程上使用的"游戏通用MVC框架",现在看来并不符合MVC这种结构性框架的设计思想:要知道,MVC最初是被设计为Web应用的框架,而游戏中的很多事件并不是通过用户点击UI发生的,Vi

  • Unity3D启动外部程序并传递参数的实现

    之前开发项目,一直都使用的是外壳程序加子程序的模式,通过外壳程序去启动子程序,外壳程序和子程序之间的通信,是使用配置文件完成的. 我总觉得这样通信很麻烦,因为外壳程序需要对配置文件进行更改和写入,然后子程序又要读取信息.而且整合的时候,会导致有很多配置文件,而且需要对路径做很多处理和限制. 我发现Process.Start()函数中,是可以传递参数的. 也就是说,我们是可以在使用Process.Start()函数启动外部程序时,传递参数的进行通信的. 具体操作如下: public void St

  • Unity3D运行报DllNotFoundException错误的解决方案

    起因 unity程序build到pc上,拿到其他人的机器上结果有些功能不正常,看log里面大概是 Fallback handler could not load library: xxx.dll DllNotFoundException: xxx.dll 初看以为是缺失dll,但是实际上并不是这样,首先在很多人机器上都是没有问题的,只在极少数机器上才出现异常,另外报错的dll都是有的,并不存在缺失的问题. 后来网上搜了一下,看到http://answers.unity3d.com/questio

  • Unity3D 计时器的实现代码(三种写法总结)

    1.每帧检查 定义一个时间变量 timer,每帧将此时间减去帧间隔时间 Time.deltaTime,如果小于或者等于零,说明定时器到了,执行相应功能代码,将此定时器重置,代码如下: public float timer = 1.0f; // Update is called once per frame void Update() { timer -= Time.deltaTime; if (timer <= 0) { Debug.Log(string.Format("Timer1 is

  • 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; vo

  • vue.js树形组件之删除双击增加分支实例代码

    html代码: <script type="text/x-template" id="item-template"> <li> <div :class="{bold: isFolder}" @click="toggle"> {{model.name}} <span v-if="isFolder">[{{open ? '-' : '+'}}]</span&

  • Angular.js 实现数字转换汉字实例代码

    AngularJS 简介 AngularJS 是一个 JavaScript 框架.它可通过 <script> 标签添加到 HTML 页面. AngularJS 通过 指令 扩展了 HTML,且通过 表达式 绑定数据到 HTML. 下面通过本文给大家介绍Angular.js 实现数字转换汉字实例代码,具体代码如下所示: // 1.实现输入数字输出对应汉字,要求使用angularjs,不准使用$watch函数,for循环:提示:ng-change指令 <div ng-app="my

  • javascript数字验证的实例代码(推荐)

    现在有一个需求如下图: 产品经理说Card Number只能让输入数字(中间的空格是格式自加的,也是用js实现的),有时候我脑海中出现了个声音,啥玩意,加个type=number不就行了,事实发现图样图森破了,先不说type=number后面会有个上下标(虽然用css可干掉),但是这个类型是支持科学输入法的,就是小数点和e这样的是可以输入的,于是乎只能用其他的方式了,后来想用检索到输入了非数字就干掉,但是这样还是能输入,想法被打回,于是乎最终采用了键盘输入控制的办法,其实很简单, 代码如下: v

  • SQL Server 实现数字辅助表实例代码

    数字辅助表是一个连续整数的数列,通常用来实现多种不同的查询任务.大多分两类:足够大物理数字表和表函数,前者可以称为静态的,后者可以称为动态且按需生产. 物理数字表 物理数字表通常存在一个物理表,表记录相对足够大,相关的T-SQL代码如下: IF OBJECT_ID(N'dbo.Nums', 'U') IS NOT NULL BEGIN DROP TABLE dbo.Nums; END GO CREATE TABLE dbo.Nums ( Num INT NOT NULL, CONSTRAINT

  • C#实现大数字运算的实例代码

    C#实现大数字的运算 1.添加引用:System.Numerics.dll 2.添加命名空间:using System.Numerics; 3.实例: 3.1判断一个数字是不是质数 复制代码 代码如下: static void Main(string[] args)        {            Console.WriteLine("请输入一个很大的数字:");            string bigNumber = Console.ReadLine();        

  • vue + element ui实现播放器功能的实例代码

    没有效果图的展示都是空口无凭 1.基于audio并结合elementUI 的进度条实现 2.实现了播放器基本的功能,播放/暂停.快进.静音.调节声音大小.下载等功能 html代码,关键部分已加注释 <div class="right di main-wrap" v-loading="audio.waiting"> <!-- 此处的ref属性,可以很方便的在vue组件中通过 this.$refs.audio获取该dom元素 --> <au

  • Android UI 实现老虎机详解及实例代码

    Android UI 实现老虎机详解 listview 的使用步骤 简单的listview老虎机实现 1.实现效果图 2.需要掌握的知识 listview的使用步骤 listview的Adapter接口的实现 listview中的MVC 3.知识详解 ListView 是一个控件,一个在垂直滚动的列表中显示条目的一个控件,这些条目的内容来自于一个ListAdapter .EditText Button TextView ImageView Checkbox 五大布局. 1.布局添加Listvie

  • 字符串中找出连续最长的数字字符串的实例代码

    复制代码 代码如下: //1. 写一个函数,它的原形是int continumax(char *outputstr,char *intputstr) //功能: //在字符串中找出连续最长的数字串,并把这个串的长度返回, //并把这个最长数字串付给其中一个函数参数outputstr所指内存. //例如:"abcd12345ed125ss123456789"的首地址传给intputstr后,函数将返回9,outputstr所指的值为123456789 #include<stdio.

  • PyQt5如何将.ui文件转换为.py文件的实例代码

    PyQt5之如何将.ui文件转换为.py文件 一.通过Eric6把.ui文件转换为.py文件 1.首先打开Eric6编辑器,切换到"窗体"选项卡,然后选中需要转换的.ui文件,单击鼠标右键,选择"编辑窗体"就可以了.(具体步骤如下图) 2.如果找不到自己需要转换的.ui文件,则可以找到"project",选择"New"新建一个工程,创建好之后就可以找到该.ui文件了,找到之后按照上面的步骤就可以了.(具体步骤如下图) 二.通过

随机推荐