29606人加入学习
(126人评价)
Unity API常用方法和类详细讲解(基于Unity5.6)
价格 免费
承诺服务

我们主要记住常用的API,最主要是有印象,并且会去查文档。

事件函数

文档里,Manual——Scripting——Execution Order Of Event Functions就有得查。

Time类

在API里输入Time就能查询;

Time.deltaTime;//每一帧为60分之1秒,主要用于移动。
Time.realtimeSinceStartup;//游戏开始就进行计时,暂行也没用。

创建游戏物体的方法

GameObject one = new GameObject("");
GameObject.Instantiate(prefab);
GameObject.CreatePrimitive(PrimitiveType.prefab);//只能用于加基本物体。
GameObject.AddComponent<prefab>();//添加组件
GameObject.SetActive();
gameobject.enable=true or false;
GameObject.activeInHierarchy();//判断是否激活。
Object.Destroy();//可以销毁物体,也可以销毁组件,也可以设置销毁时间。
Object.DontDestroyOnLoad(transform.gameobject);//场景跳转保留该物体。
Object.FindObjectOfType<prefab>();//查找有此组件的物体,只找第一个找到的。
Object.FindObjectsOfType<prefab>();//查找有此组件的物体,找到所有的。
Object.Instantiate();//设置物体的位置。
GameObject.name==Component.name;//成立

因为GameObject,Component 他们俩各自继承了Object类。

//GameObject独有的静态方法
GameObject.Find(); //很耗性能。
GameObject.FindGameObjectsWithTag();  //耗性能小。
//广播
GameObject.BroadcastMessage("方法名",参数,是否接收);//广播当前物体和所有孩子,减少耦合性
GameObject.SendMessage();//当前物体
GameObject.SendMessageUpwards();//当前物体和所有父亲

MonoBehaviour

脚本创建的时候默认继承的类。其间接地继承了Component

Invoke("函数名",int time);//几秒后调用函数
IsInvoking("函数名");//判断该函数是否在Invoke队列里。
InvokeRepeating("函数名",a,b);//函数在a秒后执行,并且之后每b秒执行一次。
CancelInvoke("函数名");//取消执行某函数

协程的解释和执行

协程方法不会阻塞其他方法的执行,并且能够暂停。

Manual——Scripting——Coroutines 就能够查到用法。

就是一组代码里面,每行代码要一行行运行,但是携程可以边运行边执行下面的其他代码。

//两个要素,IEnumerator 和 yield return null/0
IEnumerator ChangeColor()//创建携程
{
    yield return new WaitForSeconds(3);//暂停的方法
    ...;
    yield return null;
}
//一般是要创个IEnumerator 的量来实例化协程,再用如下的方法,停止协程才能正常进行。
StartCoroutine(ChangeColor()); //调用协程,里面可以用("函数名")的方式用。
StopCoroutine(ChangeColor());  //停止协程
StopAllCoroutine();//停止全部协程

鼠标相关事件函数OnMouseXXX

这类的函数要有识别,物体上必须有Collider,而且这个Collider可以是trigger触发器并且设置里要有勾个选项。这类方法和colliderenter等类似,是满足条件就触发。

void OnMouseDown(){}//按下
void OnMouseUp(){}//抬起
void OnMouseDray(){}//按住拖动
//Over在物体上,Enter进入物体,Exit移除物体

Mathf类的使用

这个类比C#的math类更好用一些chen

Mathf.Deg2Rad;//角乘这个数就会面为弧度
Mathf.Rad2Deg;//和上面相反
Mathf.Epsilon;//无穷小,接近0但是不是0
Mathf.Infinity;//无穷大
Mathf.PI;//就是字面意思
Mathf.NegativeInfinit;//无穷小的数
//方法
Abs();//取绝对值
Ceil();//向上取整,返回float
CeilToInt();//向上取整,int
Clamp(a,b,c);//把a的值限制在b到c之间
ClosestPowerOfTwo();//得得离2的n次方最近得数
DeltaAngle(a,b);//a和b之间的最小夹角
Floor();//向下取整
Max();//取最大值
Min();//取最小值
Sqrt();//取平方根
Pow(a,b);//a的b次方
//匀速运动,x代表的是每帧运行的距离
MoveTowards(a,b,x);//从a移动到b,x是速度,-就是往反向移动。一般是Time.deltaTime*Speed
//插值运算,一般把t设置为Time.deltaTime*Speed
Lerp(a,b,t);  //t代表比例,取值为0到1之间,按比例取a到b之间得值。
//来回运动,总之就是在一个范围来回运动,可以用Time.deltaTime*Speed代表t。
PingPong(t,length);//if(0<t<length),返回值就是t,if(length<t<2length),返回2length-t

Input类

//GetKeyXXX系列
GetKey();//持续判断一直按下
GetKeyDown();//按下执行一次
GetKeyUp();//抬起执行一次
//能接收的键盘类型为KeyCode类和字符串类型
//鼠标按键事件监测,0:左键,1:右键,2:中间滚轮
GetMouseButton();
GetMouseButtonDown();
GetMouseButtonUp();
//GetButtonXXX系列
//这个系列是判定虚拟按键的,虚拟按键在软件里的Input Setting里设置。
//好处:一个button name可以对应多个按键
//GetAxis系列,与上面的区别在于
//其他的返回值是bool类型,而这个系列返回的是数值。
GetAxis();//0到1的渐变
GetAxisRaw();//0直接到1
Input.anyKeyDown;//持续判断,鼠标是否按下
Input.mousePosition;//持续判断,以像素为单位,鼠标在屏幕上的位置
​

Vector系列

Vector系列是结构体。

//Vextor2系列
//变量
up,down,left,right,one,zero;
normalized;//长度变为1,取得单位化的值
magnitude;//求长度
sqrMagnitude;//这个是还没开根号的,更节约性能,用于比较长度
//方法
Equals();//比较相等
Normalized();//把自身单位化
Set();//用于设置值
Abgke();//夹角
ClampMagnitude();//限制长度
Distance();//向量距离
Dot();//点乘
Lerp();//插值运算
LerpUnclamped();//不限制大小的插值。
//Vector3系列,左手坐标系
up,down,left,right,one,zero,forward,back;

Random系列

Random.Range(a,b);//a到b之间的随机数。
Random.InitState();//选择随机数的算法种子,当如
Random.value;//随机0到1的值,包含0,1
Random.insideUnitCircle//圆面随机
Random.insideUnitSphere//球面随机

Quaternion系列

cube.eulerAngle = new Vector3(45,45,45);
cube.rotation = Quaternion.Euler(new Vector3(45,45,45));
Quaternion.LookRotation(vector3 dir);//转向
Quaternion.Lerp();//插值,以直线为准
Quaternion.Slerp();//插值,以曲线为准

Rigidbody刚体

Rigidbody.position;//用这个设置移动会更快。如果持续移动最好用MovePsition()
Rigidbody.MovePsition();//移动到一个位置,并且更加平滑。
Rigidbody.rotation;//适合用于一次的转动
Rigidbody.MoveRotation();//适合用于持续的转动
Rigidbody.AddForce();//对物体施加力

Application类

主要用作与一些运行方面的操作

dataPath;//工程路径
StreamingAssetsPath;//找到一个叫Streaming Assets的文件夹,它用于直接保留文件。
persistentDataPath;//待查
temporaryCachePath;//临时缓冲数据
OpenURL();//打开网页链接
Quit();//退出游戏
//场景加载
Application.Loadlevel(a);//加载第a+1个场景。这个方法已经不怎么用了

SceneManager

using UnityEngine.SceneManagement;
SceneManager.LoadScene();//可通过标号或者名字添加,后面有LoadSceneMode参数
//两种方式 Single(销毁前一个)和Additive(保留前一个)
SceneManager.LoadSceneAsync();//异步方式添加场景,用于展示进度条。
SceneManager.GetActiveScene().name;//获取当前场景
SceneManager.GetSceneAt();//获取其他场景的信息
SceneManager.activeSceneChanged += hanshu;//场景转换执行
SceneManager.sceneLoaded += hanshu;//场景加载执行

射线系列

Ray ray =  new Ray();
RaycastHit hit;
Physics.Raycast();//用于检测碰撞和设定射线的检测范围
Physics2D.Raycast();

UGUI的事件

三种方法:

  1. 通过拖拽的方式监听UGUI的事件

  1. 通过代码添加:

public GameObject button1;
button1.GetComponent<Button>().onClick.AddListener(this.方法名);
//滑块要输入float参数的,所以给slider的函数得要有(float value)参数
slider1.GetComponent<Slider>().onValueChanged.AddListener(this.方法名);
//下拉块,要(Int32 value)的参数接收
dropDown1.GetComponent<Dropdown>().onvalueChanged.AddListener(this.方法名);
//Toggle这种选项块,理所当然地要有(bool value)参数
  1. 通过实现接口:查询Supported Events

要先确定UI的Raycast Target是勾选的

  • 1 IPointerDownHandler:按下触发

  • 2 IPointerClickHandler:按下弹起触发

  • 3 IPointerUpHandler:弹起触发

  • 4 IPointerEnterHandler:进范围触发

  • 5 IPointerExitHandler:出范围触发

这个脚本放在哪里就只能控制哪个

using UnityEngine.UI;
using UnityEngine.EventSystems;
public class UIName:MonoBehaviour,IPointerDownHandler //通过继承与实现接口

www类

目前www类是被淘汰了

Touches触摸事件

主要是用于手机的,也就是多个手指的触发。

其实可以使用插件easytouch。

Camera

  1. Near与Far:能在相机里显示的范围

  2. Field of view:视野的范围。

Ray ray = Camera.ScreenPointToRay(Input.mousePosition);
ray.origin;//射线起点
ray.direction;//射线方向

CharacterController类

CharacterController.SimpleMove(f*v);
CharacterController.isGrounded;
CharacterController.Move(f*v*Time.deltaTime);
private void OnControllerColliderHit(ControllerColliderHit hit){}//碰撞触发事件

Mesh与Material

mesh就是网格,Material就是材质

一些注意的地方

SceneManagement 代替 Application

[展开全文]

SceneManager.LoadScene

SceneManager.GetActiveManager

SceneManger.LoadScene(SceneManager.GetActiveScene().buildIndex);

 

OnLevelWasLoaded(int level)

 

private void OnLevelWasLoaded(int level)

void OnSceneLoaded()

SceneManager.sceneLoaded += this.OnSceneLoaded

Scene scene, LoadModed model

 

[展开全文]

1.创建游戏物体f的三种方法
new GameObject();括号里可以添加想要创建的物体类型例如
new GameObject("Cube");创建出一个正方体
GameObject.Instantiate();
实例化Prefabs或实例化游戏物体
GameObject.CreatePrimitive();
创建原始图形如:.GameObject.CreatePrimitive(PrimitiveType.Cube);
2.通过代码给游戏物体添加组件
 private GameObject object;
object.AddComponent<Rigidbody>();
通过代码给游戏物体j添加脚本
object.AddComponent<脚本名>();
3.GameObject游戏物体的常用类
GameObject.activeInHierarchy 物体是否处于激活状态(包括自身及子物体)
4.UnityEngine下Object的静态方法
Object.Destroy:
Destroy(gameobject,time);
Object.DontDestroyOnLoad:
DontDestroyOnLoad(transform.gameObject);(在进行场景之间转换时不会被销毁,会被带到下一个场景中)
Object.FindObjectOfType:
Object   a =FindObjectOfType(typeof(组件名))
Rigidbody  a=FindObjectOfType<Rigidbody>();
只返回第一个被检测到含有此组件的物体。不查找未激活的游戏物体
Object.FindObjectsOfType:
Object   a =FindObjectsOfType(typeof(组件名))
Rigidbody a=FindObjectsOfType<Rigidbody>();
将检测到的所有的含有此组件的物体都存在数组中。不查找未激活的游戏物体
5.查找方法
Find(比较耗费性能)
FindGameObjectsWithTag返回所有是次标签的物体返回数组
FindWithTag只返回第一个检测到的物体。
6.游戏物体间消息的发送和接收
GameObject.BroadcastMessage();包括其自身及其子物体
GameObject.SendMessage(); 不包括子物体
GameObject.SendMessageUpwards();包括其自身及其父物体
7.得到组件的各种方法函数

GetComponent;只会得到在游戏物体身上的第一个检测到的组件

GetComponent;会得到物体上所有的组件

GetComponentInChildren;会得到其自身及其子物体身上第一个检测到的相应的组件

GetComponentInParent;会得到其自身及其父物体身上第一个检测到的相应的组件

GetComponentsInChildren;会得到其自身及其子物体身上所有检测到的相应的组件

GetComponentsInParent;会得到其自身及其父物体身上所有检测到的相应的组件

8.Public Functions

Invoke;

Public void Invoke(string methodName,float time );可延时调用方法

CancelInvoke;取消所有调用的方法(仅适用于当前脚本,不影响其他脚本中相同方法的调用)

InvokeRepeating;重复调用方法

IsInvoking;判断方法是否正在被调用

协程:

1.返回值是IEnumerator

2.返回参数时使用yield return null/0。

3协程方法的调用:使用StartCoroutine(需要调用的协程方法的名字);

4暂停yield return new WaitForSeconds(需要暂停的时间);

例如:

IEnumerator Method(){

内容;

yied return null;

}

StartCoroutine();开启协程

StopCoroutine();关闭协程

StopAllCoroutine();

9.与鼠标相关事件函数OnMouseXXX

OnMouseDown();当鼠标按下时触发

OnMouseUp();当鼠标抬起时触发

OnMouseDrag();当鼠标已经按下但没有抬起时触发

OnMouseEnter();当鼠标在游戏物体身上但没有按下鼠标时触发

ONMouseExit();当鼠标离开游戏物体时触发

OnMouseOver();当鼠标在游戏物体身上时无论是鼠标按下或没有按下只要鼠标在游戏物体身上就触发。

10.Mathf里面的方法

Mathf.PI 圆周率

Mathf.Deg2Rad 将度数转变为弧度

Mathf.Rad2Deg 将弧度转成度数

Mathf.Epsilon 无限小的数

Mathf.Infinity 无限大的数

Mathf.Abs 绝对值

Mathf.Ceil 向上取整

如Mathf.Ceil(10);结果为10.

Mathf.Ceil(10.2f);结果为11.

Mathf.Ceil(-10);结果为-10.

Mathf.Ceil(-10.2f);结果为-10.

Mathf.Floor();向下取整。

Mathf.Clamp(float value,float min,flaot max); valur为自己定义的数值。如果value小于min则将value改为min,如果value大于min且小于max则value为自身值,如果value大于max则将value改为max。

Mathf.ClosesPowerOfTwo(int value);取离value最近的2的多次方

如Mathf.ClosesPowerOfTwo(3);返回4

Mathf.ClosesPowerOfTwo(7);返回8

Mathf.DeltaAngle();返回角度之间的最小夹角。如721°-360°=361°,其返回1°。

Mathf.Exp(float power);代表e的power次方

Mathf.Max(float a,float b);比较两个数中的最大值(float可换为int)

Mathf.Max(float[] value);比较数组中的最大值(float可换为int)

Mathf.Min(float a,float b);比较两个数中的最小值(float可换为int)

Mathf.Min(float[] value)比较数组中的最小值(float可换为int

Mathf.Pow(float a,float b);a的b次方。

Mathf.Sqrt();开平方根。

Mathf.Lerp(float a,float b,float t);插值运算 

t为a到b之间的距离的比率,如t=0.5时,返回值为(a+b)*0.5,t为0时,返回值为a,t为1时返回值为b;

Mathf.LerpAngle();角度的差值运算

 Mathf.MoveToWards(float a,float b,float t);

a初始 值,b目标值,t从a到b每帧所移动的距离。

Mathf.PingPong(float a,float b);返回值在0到b之间0为最小值,b为最大值,返回值随着a的增大在0到b之间往返。

11.Input

GetTouch()屏幕触摸

Input.anyKeyDown();按下任何键都会触发,包括鼠标。

Input.mousePosition;鼠标在键盘上的实时坐标。

12.Vector2

magnitude;返回向量的长度。根号下X的平方加Y的平方。

normalized;将长度不为一的向量在方向不变的情况下,将长度取一。不改变向量本身。 

sqrMagnitude;X的平方加Y的平方不开根号,一般用于较为节省性能的比较两个向量的长度

向量是结构体,如要修改,需整体修改。如

transform.position=new vector3(3,3,3);

如想要只修改物体的X坐标,直接调用transform.position.x是错误的。需:

Vector3 pos=transform.position;

pos.x=10;

transform.position=pos;

即可。

Vector2.Equals;判断两个向量是否相等。相等返回true,不相等返回flase.

Vector2.Normalize();将向量单位化,改变向量。

Vector2.Angle();用来取得两个向量的夹角。

Vector2.Distance(Vector2 a,Vector2 b);返回a,b两个点的距离。

Vector2.Dot()点乘。

Vector2.MoveTowards(Vector2 a,Vector2 b,float c);物体从a移动到b,c是速度。

13.Vector3

Vector3.MoveTowards();作用与Vector2的相同,用于移动。

Vector3.Normalize();单位化向量。

Vector3.Project(Vector3 a,Vector3 b);返回值为a在b身上的投影。

Vector3.Reflect(Vector3 a,Vector3 b);反射向量,a为入射光,为镜子的方向,返回值为出射光

Vector3.Slerp(Vector3 a,Vector3 b,Vector3 c);插值,由a转到b,c为速度。

14.Random随机数

Random.InitState();随机数的种子,相同的种子,随机数生成序列相同。

1.创建游戏物体f的三种方法
new GameObject();括号里可以添加想要创建的物体类型例如
new GameObject("Cube");创建出一个正方体
GameObject.Instantiate();
实例化Prefabs或实例化游戏物体
GameObject.CreatePrimitive();
创建原始图形如:.GameObject.CreatePrimitive(PrimitiveType.Cube);
2.通过代码给游戏物体添加组件
 private GameObject object;
object.AddComponent<Rigidbody>();
通过代码给游戏物体j添加脚本
object.AddComponent<脚本名>();
3.GameObject游戏物体的常用类
GameObject.activeInHierarchy 物体是否处于激活状态(包括自身及子物体)
4.UnityEngine下Object的静态方法
Object.Destroy:
Destroy(gameobject,time);
Object.DontDestroyOnLoad:
DontDestroyOnLoad(transform.gameObject);(在进行场景之间转换时不会被销毁,会被带到下一个场景中)
Object.FindObjectOfType:
Object   a =FindObjectOfType(typeof(组件名))
Rigidbody  a=FindObjectOfType<Rigidbody>();
只返回第一个被检测到含有此组件的物体。不查找未激活的游戏物体
Object.FindObjectsOfType:
Object   a =FindObjectsOfType(typeof(组件名))
Rigidbody a=FindObjectsOfType<Rigidbody>();
将检测到的所有的含有此组件的物体都存在数组中。不查找未激活的游戏物体
5.查找方法
Find(比较耗费性能)
FindGameObjectsWithTag返回所有是次标签的物体返回数组
FindWithTag只返回第一个检测到的物体。
6.游戏物体间消息的发送和接收
GameObject.BroadcastMessage();包括其自身及其子物体
GameObject.SendMessage(); 不包括子物体
GameObject.SendMessageUpwards();包括其自身及其父物体
7.得到组件的各种方法函数

GetComponent;只会得到在游戏物体身上的第一个检测到的组件

GetComponent;会得到物体上所有的组件

GetComponentInChildren;会得到其自身及其子物体身上第一个检测到的相应的组件

GetComponentInParent;会得到其自身及其父物体身上第一个检测到的相应的组件

GetComponentsInChildren;会得到其自身及其子物体身上所有检测到的相应的组件

GetComponentsInParent;会得到其自身及其父物体身上所有检测到的相应的组件

8.Public Functions

Invoke;

Public void Invoke(string methodName,float time );可延时调用方法

CancelInvoke;取消所有调用的方法(仅适用于当前脚本,不影响其他脚本中相同方法的调用)

InvokeRepeating;重复调用方法

IsInvoking;判断方法是否正在被调用

协程:

1.返回值是IEnumerator

2.返回参数时使用yield return null/0。

3协程方法的调用:使用StartCoroutine(需要调用的协程方法的名字);

4暂停yield return new WaitForSeconds(需要暂停的时间);

例如:

IEnumerator Method(){

内容;

yied return null;

}

StartCoroutine();开启协程

StopCoroutine();关闭协程

StopAllCoroutine();

9.与鼠标相关事件函数OnMouseXXX

OnMouseDown();当鼠标按下时触发

OnMouseUp();当鼠标抬起时触发

OnMouseDrag();当鼠标已经按下但没有抬起时触发

OnMouseEnter();当鼠标在游戏物体身上但没有按下鼠标时触发

ONMouseExit();当鼠标离开游戏物体时触发

OnMouseOver();当鼠标在游戏物体身上时无论是鼠标按下或没有按下只要鼠标在游戏物体身上就触发。

10.Mathf里面的方法

Mathf.PI 圆周率

Mathf.Deg2Rad 将度数转变为弧度

Mathf.Rad2Deg 将弧度转成度数

Mathf.Epsilon 无限小的数

Mathf.Infinity 无限大的数

Mathf.Abs 绝对值

Mathf.Ceil 向上取整

如Mathf.Ceil(10);结果为10.

Mathf.Ceil(10.2f);结果为11.

Mathf.Ceil(-10);结果为-10.

Mathf.Ceil(-10.2f);结果为-10.

Mathf.Floor();向下取整。

Mathf.Clamp(float value,float min,flaot max); valur为自己定义的数值。如果value小于min则将value改为min,如果value大于min且小于max则value为自身值,如果value大于max则将value改为max。

Mathf.ClosesPowerOfTwo(int value);取离value最近的2的多次方

如Mathf.ClosesPowerOfTwo(3);返回4

Mathf.ClosesPowerOfTwo(7);返回8

Mathf.DeltaAngle();返回角度之间的最小夹角。如721°-360°=361°,其返回1°。

Mathf.Exp(float power);代表e的power次方

Mathf.Max(float a,float b);比较两个数中的最大值(float可换为int)

Mathf.Max(float[] value);比较数组中的最大值(float可换为int)

Mathf.Min(float a,float b);比较两个数中的最小值(float可换为int)

Mathf.Min(float[] value)比较数组中的最小值(float可换为int

Mathf.Pow(float a,float b);a的b次方。

Mathf.Sqrt();开平方根。

Mathf.Lerp(float a,float b,float t);插值运算 

t为a到b之间的距离的比率,如t=0.5时,返回值为(a+b)*0.5,t为0时,返回值为a,t为1时返回值为b;

Mathf.LerpAngle();角度的差值运算

 Mathf.MoveToWards(float a,float b,float t);

a初始 值,b目标值,t从a到b每帧所移动的距离。

Mathf.PingPong(float a,float b);返回值在0到b之间0为最小值,b为最大值,返回值随着a的增大在0到b之间往返。

11.Input

GetTouch()屏幕触摸

Input.anyKeyDown();按下任何键都会触发,包括鼠标。

Input.mousePosition;鼠标在键盘上的实时坐标。

12.Vector2

magnitude;返回向量的长度。根号下X的平方加Y的平方。

normalized;将长度不为一的向量在方向不变的情况下,将长度取一。不改变向量本身。 

sqrMagnitude;X的平方加Y的平方不开根号,一般用于较为节省性能的比较两个向量的长度

向量是结构体,如要修改,需整体修改。如

transform.position=new vector3(3,3,3);

如想要只修改物体的X坐标,直接调用transform.position.x是错误的。需:

Vector3 pos=transform.position;

pos.x=10;

transform.position=pos;

即可。

Vector2.Equals;判断两个向量是否相等。相等返回true,不相等返回flase.

Vector2.Normalize();将向量单位化,改变向量。

Vector2.Angle();用来取得两个向量的夹角。

Vector2.Distance(Vector2 a,Vector2 b);返回a,b两个点的距离。

Vector2.Dot()点乘。

Vector2.MoveTowards(Vector2 a,Vector2 b,float c);物体从a移动到b,c是速度。

13.Vector3

Vector3.MoveTowards();作用与Vector2的相同,用于移动。

Vector3.Normalize();单位化向量。

Vector3.Project(Vector3 a,Vector3 b);返回值为a在b身上的投影。

Vector3.Reflect(Vector3 a,Vector3 b);反射向量,a为入射光,为镜子的方向,返回值为出射光

Vector3.Slerp(Vector3 a,Vector3 b,Vector3 c);插值,由a转到b,c为速度。

14.Random随机数

Random.InitState();随机数的种子,相同的种子,随机数生成序列相同。

Random.value();随机生成从0到1的值包括0和1。

Random.State();获取随机数的状态(种子)

Random.insideUnitCircle()*x在半径为x米的圆内随机生成。返回二维向量。

Random.insideUnitSphere();*x在半径为x的球体内生成为三位向量

15.四元数与欧拉角

当物体旋转时,当其绕x轴或z轴旋转时是绕其自身x轴和z轴旋转,当其绕y轴旋转时,是绕世界坐标的y轴旋转。

Quaternion.rotation;四元数。

Quaternion.eulerAngles;将一个四元数转变成欧拉角。也可直接设置物体的旋转。

 Quaternion.Euler将欧拉角转换为四元数。

Quaternion.LookRotation();将物体的朝向改为沿规定的向量,通常用来面向敌人。

Quaternion.Slerp();插值

Quaternion.Lerp();插值

16.Rigidbod刚体

Rigidbody.centerOfMass();取得物体的重心。

Rigidbody.position();可通过刚体修改物体的位置,且这种方法运行更快,推荐使用。

Rigidbody.MovePosition()控制物体平滑地运动(远距离使用)

Rigidbody.rotation();可通过刚体控制物体的旋转,且这种方法更快,推荐使用。

Rigidbody.MoveRotation();更加平滑的旋转,(长时间大角度连续旋转使用)。

Rigidbody.AddForce(a*b);施加力。a为想要物体运动大方向,为向量,b为施加在物体身上的力。

17.Camera

Camera.main();得到场景的第一个检测到的层为main Camera的相机

Camera.ScreenPointToRay();射线检测;

Camera.allCameras 返回场景中的所有摄像机以数组的形式

Camera.allCamerasCount 用来获取场景当中相机的数量

 

18.Application

 Application.datapath工程所在路径 

 Application.streamingAssetsPath可通过文件流来读取数据(不会被打包)

 Application.persistentDataPath

 Application.temporaryCachePath临时缓冲数据

  Application.identifier标识

 Application.companyName公司名

 Application.productName产品名(安装完成显示的名字)

 Application.installerName安装包的名字

 Application.installMode安装模式

 Application.isEditor用来判断是否在编辑器模式下运行。

Application.isFocused用来判断是否处于焦点

 Application.isMobilePlatform用来判断当前是否处于移动平台上运行

 Application.isPlaying用来判断是否正在运行(在编辑器模式下)

 Application.isWebPlayer

 Application.platform用来判断当前运行的环境

 Application.unityVersion用来得到开发应用的版本

 Application.runInBackground用来设置应用是否可以在后台运行

 Application.Quit();退出(编辑器模式下无效)

 Application.OpenURT();用来打开网站

 Application.CaptureScreeenshot("a");取得截图a为截图的名字

19.加载场景和SceneManager的其他方法

SceneManager.LoadScene();加载方法(1,通过场景标号;2,通过场景名字;)

SceneManager.LoadScene();异步加载,可以用来设置显示加载的进度条

SceneManager.CreateScene();创建新场景(在编辑器模式下)

SceneManager.GetActionsScene();获取当前场景

SceneManager.GetSceneAt();用来获取指定的场景

SceneManager.GetSceneAtBuildIndex();用来获取指定场景(通过场景标号index)

SceneManager.activeSceneChange();当场景发生变换时(加载新的场景时)触发

SceneManager.sceneLoaded();新场景加载完成时触发

SceneManager.sceneUnloaded();当场景由1转换到2 时,1会被卸载,当a被卸载完成时触发。

20.射线检测

Physics.Raycast();射线检测,检测所发生的射线是否与其他物体的碰撞器发生碰撞,如果发生返回true,没有发生返回false.

RaycastHit;有多种重载方式。如

RaycastHit b;

1.Physics.Raycast(a,out b);a为发射的射线,b为碰撞到的物体,可根据b返回碰撞到的物体的一些属性。

2.Physics.Raycast(a,b,LayerMask.GetMask("c"));a为发射的射线,b为射线的长度,c为想要检测到的物体的层,可设置多个层。

2D

Physics2D.Raycast();

Physics2D.RaycastAl();

21.UGUI事件监听

常见UGUI:

Button;按钮

Slider;滑动条

Dropdom;下拉菜单

Toggle;单选框

1.可通过拖拽添加监听事件

2.可通过代码添加 如:

GameObject.Getponent<Button>().onClick.AddListener();可通过此代码给Button添加监听事件。

3.通过实现接口:

IPointerDownHandler 鼠标按下。

IPointerClickHandler 鼠标点击(鼠标按下后抬起为一次点击)

IPointerUpHandler  鼠标抬起。

IpointerEnterHandler 鼠标移到物体上方。

IPointerExitHandler 鼠标移出

IBeginDragHandler 开始拖拽

IDragHandler 拖拽中

IEndDragHandler 结束拖拽

IDropHandler 拖拽开始与结束都在同一物体上时触发

IScrollHandler 滑轮滑动时触发

22.www

支持 http://    file://  ftp://(ftp://支持匿名下载及不需要登陆账号或一些权限的)

23.Touches

touches 用来获取当前触摸的数量,返回数组

GetTouch 用来获取触摸事件

24.CharacterController角色控制器(组件)

CharacterController.SimpleMove();简单移动

CharacterController.isGrounded 判断物体是否在地面上

CharacterController.move();

24.Mesh

25.Material材质类

a=GetComponent<MeshRenderer>().Material 获取材质的方法

26.Animator

Animator.speed 修改动画状态机的速度

SetBool();

SetFloat();

SetTarget();

SetTrigger();

System.DateTime.Now可以获取当前时间

[展开全文]