【Unity 3D】学习笔记二十八:unity工具类

unity为开发者提供了很多方便开发的工具,他们都是由系统封装的一些功能和方法。比如说:实现时间的time类,获取随机数的Random.Range( )方法等等。

时间类

time类,主要用来获取当前的系统时间。

using UnityEngine;
using System.Collections;

public class Script_04_13 : MonoBehaviour {

	void OnGUI()
	{
		GUILayout.Label("当前游戏时间:" + Time.time);
		GUILayout.Label("上一帧所消耗的时间:" + Time.deltaTime);
		GUILayout.Label("固定增量时间:" + Time.fixedTime);
		GUILayout.Label("上一帧所消耗固定时间:" + Time.fixedDeltaTime);
	}
}

运行:

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

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

Time.fixedTime:FixedUpdate( )方法中固定消耗的时间总和。

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

程序等待

在程序中使用WaitForSeconds()方法可以以秒为单位让程序等待一段时间,可直接使游戏主线程进入等待状态。该方法返回值为IEnumerator类型。

using UnityEngine;
using System.Collections;

public class Script_04_14 : MonoBehaviour {

	IEnumerator Start()
	{
		//等待
		return Test();
	}

	//返回等待时间
	IEnumerator Test()
	{
		Debug.Log("开始等待:" + Time.time);
		yield return new WaitForSeconds(2);
		Debug.Log("结束等待:" + Time.time);
	}

}

运行:

在需要等待的地方调用yield return new WaitForSeconds(2),方法中的2表示等待2秒。

数学类

unity为开发者封装了一个数学类Mathf。

Mathf.Abs(int i)返回一个整型绝对值。

Mathf.sin(5)返回正弦值。

Mathf.Max(0,100)返回两个数的最大值

Mathf.PI圆周率

感兴趣的可以自行查看API文档或者谷歌

四元数

四元数是非常非常重要的工具类。unity中实现游戏对象旋转,其低层都是由四元数实现的,它可以精确的计算游戏对象旋转的角度。

下面会通过一个简单的例子来总结,在这个例子中,点击旋转固定角度,游戏对象将沿Y轴直接旋转50度,点击插值旋转固定角度,游戏对象将沿Y轴直接旋转60度.

using UnityEngine;
using System.Collections;

public class Script_04_16 : 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,60.0f,0.0f), Time.time *0.1f);
		}
	}

}

运行:

点击旋转固定角度:

点击插值旋转固定角度:

Quaternion.Euler( )

Quaternion.Slerp ()

随机数

有时程序需要获取随机数,实现很简单使用Random.Range()方法就行

using UnityEngine;
using System.Collections;

public class Script_04_15 : 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.0f-10.0f之间的浮点型随机数" + b);
	}

}

运行:

【Unity 3D】学习笔记二十八:unity工具类,布布扣,bubuko.com

时间: 2024-12-09 06:00:43

【Unity 3D】学习笔记二十八:unity工具类的相关文章

angular学习笔记(二十八)-$http(6)-使用ngResource模块构建RESTful架构

ngResource模块是angular专门为RESTful架构而设计的一个模块,它提供了'$resource'模块,$resource模块是基于$http的一个封装.下面来看看它的详细用法 1.引入angular-resource.min.js文件 2.在模块中依赖ngResourece,在服务中注入$resource var HttpREST = angular.module('HttpREST',['ngResource']); HttpREST.factory('cardResource

马哥学习笔记二十八——nginx反向代理,负载均衡,缓存,URL重写及读写分离

Nginx反向代理 Nginx通过proxy模块实现反向代理功能.在作为web反向代理服务器时,nginx负责接收客户请求,并能够根据URI.客户端参数或其它的处理逻辑将用户请求调度至上游服务器上(upstream server).nginx在实现反向代理功能时的最重要指令为proxy_pass,它能够将location定义的某URI代理至指定的上游服务器(组)上.如下面的示例中,location的/uri将被替换为上游服务器上的/newuri. location /uri { proxy_pa

angular学习笔记(二十八-附2)-$resource中的promise对象

下面这种promise的用法,我从第一篇$http笔记到$resource笔记中,一直都有用到: HttpREST.factory('cardResource',function($resource){ return $resource('/card/user/:userID/:id',{userID:123,id:'@id'},{charge:{method:'POST',params:{charge:true},isArray:false}}) }); HttpREST.factory('h

angular学习笔记(二十八-附1)-$resource中的资源的方法

通过$resource获取到的资源,或者是通过$resource实例化的资源,资源本身就拥有了一些方法,比如$save,可以直接调用来保存该资源: 比如有一个$resource创建的服务: var service = angular.module('myRecipe.service',['ngResource']); service.factory('Recipe',['$resource',function($resource){ return $resource('/recipe/:id',

Java基础学习笔记二十八 管家婆综合项目

本项目为JAVA基础综合项目,主要包括: 熟练View层.Service层.Dao层之间的方法相互调用操作.熟练dbutils操作数据库表完成增删改查. 项目功能分析 查询账务 多条件组合查询账务 添加账务 编辑账务 删除账务 项目环境搭建 技术选型和jar包介绍 每个项目都要使用一些已经成熟的技术,它们通常是由一些专业组织或团队所提供的开源免费技术.在今后的学习过程中,我们会逐渐对这些专业组织有所了解.本项目中使用的技术如下: apache的commons组件: commons-dbutils

mybatis学习笔记(二)-- 使用mybatisUtil工具类体验基于xml和注解实现

项目结构  基础入门可参考:mybatis学习笔记(一)-- 简单入门(附测试Demo详细过程) 开始体验 1.新建项目,新建类MybatisUtil.java,路径:src/util/MybatisUtil.java package util; import java.io.InputStream; import org.apache.ibatis.session.SqlSession; import org.apache.ibatis.session.SqlSessionFactory; i

[傅里叶变换及其应用学习笔记] 二十八. 高维移位定理

高维傅里叶变换的移位定理 在一维傅里叶变换的移位定理时,有 $f(t) \quad \leftrightarrow \quad F(s)$ $f(t-b) \quad \leftrightarrow \quad e^{-2\pi isb}F(s)$ 在二维傅里叶变换的移位定理时,有两个变量,可分别对它们进行移位, $f(x_1,x_2) \quad \leftrightarrow \quad F(\xi_1,\xi_2)$ $f(x_1-b_1,x_2-b_2) \quad \leftright

PHP学习笔记二十八【抽象类】

<?php //定义一个抽象类.主要用来被继承 //如果一个类继承了抽象类,则它必须实现该抽象类的所有抽象方法(除非它自己也是抽象类) // abstract class Animal{ public $name; protected $age; abstract function Cry();//定义抽象方法,不需要方法体,子类必须实现它 public function Run (){//抽象类可以定义非抽象方法 echo "动物在跑.......<br/>"; }

【Unity 3D】学习笔记二十六:unity游戏脚本(六)

在3D游戏世界中,任何一个游戏对象在创建的时候都会附带Transform(变换)组件,并且该组件是无法删除的,也不应该删除.在unity中,Transform面板一共有3个属性: Position  (位置) Rotation(旋转) Scale(缩放) 这三个值都是用来调整游戏对象在游戏界面中的位置,状态等相关参数. Position  (位置) 任何一个游戏对象的三维坐标都保存在Vector3容器中,该容器记录对象在X轴,Y轴,Z轴的坐标.一旦Vector33容器中的坐标发生变化,那么Sce