本网站(662p.com)打包出售,且带程序代码数据,662p.com域名,程序内核采用TP框架开发,需要联系扣扣:2360248666 /wx:lianweikj
精品域名一口价出售:1y1m.com(350元) ,6b7b.com(400元) , 5k5j.com(380元) , yayj.com(1800元), jiongzhun.com(1000元) , niuzen.com(2800元) , zennei.com(5000元)
需要联系扣扣:2360248666 /wx:lianweikj
Unity 3D 工具类
吴振华 · 1392浏览 · 发布于2019-09-10 +关注

本文转自https://blog.csdn.net/qq_39588003/article/details/99179792

一、时间

Time.time:从游戏开始后开始计时,表示截止目前共运行的游戏时间。

Time.deltaTime:获取Update()方法中完成上一帧所消耗的时间。

Time.fixedTime:FixedUpdate()方法中固定消耗的时间总和。FixedUpdate()每一帧更新的时间可通过导航菜单栏“Edit”==>“Project Settings”==>“Time” 菜单项去设置。

Time.fixedDeltaTime:固定更新上一帧所消耗的时间。

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
 
public class E4_09Time : MonoBehaviour {
 
void OnGUI()
    {
        GUILayout.Label("当前游戏时间:"+Time.time);
        GUILayout.Label("上一帧所消耗的时间:" + Time.deltaTime);
        GUILayout.Label("固定增量时间:" + Time.fixedTime);
        GUILayout.Label("上一帧所消耗的固定时间:" + Time.fixedDeltaTime);
    }
}

1.png


 

二、等待

WaitForSeconds()方法可以 以秒为单位 让程序(主线程)等待一段时间。该方法的返回值为 IEnumerator 类型,在需要的地方调用 yield return WaitForSeconds()


示例:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
 
public class E4_09Wait : MonoBehaviour {
 
IEnumerator Start()
    {
        Debug.Log("开始等待:"+Time.time);
        yield return new WaitForSeconds(2);
        Debug.Log("结束等待:"+Time.time);
    }
 
}


如果在某个方法中执行等待事件,那么在调用它的方法中同样要添加 IEnumerator 作为方法的返回类型,并在调用的方法中执行return方法。如下:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
 
public class E4_09Wait : MonoBehaviour {
 
IEnumerator Start()
    {
        //等待
        return Test();
    }
 
    //返回等待时间
    IEnumerator Test()
    {
        Debug.Log("开始等待:"+Time.time);
        yield return new WaitForSeconds(2);
        Debug.Log("结束等待:"+Time.time);
    }
}

注:一定要将WaitForSeconds()方法的返回类型修改为 IEnumerator ,否则无法实现等待。

三、随机数

Random.Range()方法:两个参数,第一个为随机数的起始位置,第二个为结束位置。返回值 取左不取右
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
 
public class E4_09Random : MonoBehaviour {
 
void Start () {
        int a = Random.Range(0,100);
        float b = Random.Range(0.0f,10.0f);
 
        Debug.Log("获取一个0-100之间的整形随机数:"+ a);
        Debug.Log("获取一个0.0-10.0之间的浮点型随机数:" + b);
}
}

四、数学

Mathf类的一些常用数学方法:

  • Mathf.Abs(int i):返回一个绝对值,整形或者浮点型。

  • Mathf.Clamp(int num, int min, int max):返回一个限值数,num值在min和max之间则返回num值,小于min返回min值,大于max返回max值。

  • Mathf.Lerp(float start, float end, Time.time):插入值,参数与start为开始值,end为结束值,Time.time为消耗的时间。该方法常用于物体的平移。(下面Quaternion.Slerp()方法常用于旋转)

  • Mathf.Sin(4):返回正弦值。

  • Mathf.Cos(4):返回余弦值。

  • Mathf.Tan(4):返回正切值。

  • Mathf.Max(2, 44):返回两个数的最大值

  • Mathf.Min(2, 44):返回两个数的最小值

  • Mathf.PI:圆周率

五、四元数

unity中所有用到模型旋转的,其底层都是有四元数实现的,它可以精确计算模型旋转的角度。

示例:

  • Quaternion.Euler()方法:返回一个旋转的四元数,该方法的三个参数为旋转的三维坐标。 执行该方法后,将四元数赋值给立方体旋转对象的旋转变量,即可在一帧内完成旋转。若想在一段时间内完成旋转,就要用Quaternion.Slerp()进行插值旋转。

  • Quaternion.Slerp()方法:第一个参数为旋转起始角度,第二个参函数为结束角度,第三个为旋转共消耗的时间[0, 1]。

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
 
public class E4_09Math : MonoBehaviour {
    
    bool isRotation = false;    //是否开始差值旋转
 
    void OnGUI()
    {
        if(GUILayout.Button("旋转固定角度",GUILayout.Height(50)))
        {
            gameObject.transform.rotation = Quaternion.Euler(0.0f,50.0f,0.0f);
        }
        if (GUILayout.Button("插值旋转固定角度", GUILayout.Height(50)))
        {
            isRotation = true;
        }
    }
    void Update()
    {
        if(isRotation)
        {
            gameObject.transform.rotation = 
                Quaternion.Slerp(gameObject.transform.rotation, 
                Quaternion.Euler(0.0f, 50.0f, 0.0f),Time.deltaTime*2.5f);
        }
    }
}

点击“旋转固定角度”将在一帧内完成旋转


点击“插值旋转固定角度”将在设定的时间(如上面代码中:Time.time*0.1f)完成旋转过程。

20190811135123416.png



相关推荐

图形学基础 | 实现OBJ文件的载入

iamitnan · 1698浏览 · 2019-05-29 10:10:17
干货!麻将平胡算法

· 992浏览 · 2019-06-06 11:45:17
Java桌球小游戏

奔跑的男人 · 640浏览 · 2019-06-11 09:37:46
图形用户界面和游戏开发

qq2360248666 · 712浏览 · 2019-06-11 09:57:01
Three.js模型隐藏或显示

吴振华 · 559浏览 · 2019-06-14 10:18:27
Cocos工程命名规则整理(node部分)

吴振华 · 878浏览 · 2019-06-14 10:24:18
加载中

0评论

评论
坐标是江苏.南京,行业是互联网,技术是PHP和java,还有熟悉前后端等。
分类专栏
小鸟云服务器
扫码进入手机网页