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

ProjectSetting /InputManager

当主要键都去掉,就会使用备用键,或者当时也可以使用,修改这四个键。

当时可能是方法使用错了,应该使用Input.GetButton("XXX");

GetAxis("Horizontal");返回float 值

cube.Translate(Vecotr3.right*TIme.deltaTime*Iinput.GetAxis("Horizontal"));

 

  

 

 

 

[展开全文]

GetButtonXXX  与PrijectSetting/Input来配合使用。

GetButtonDown

GetButtonUp

GetButton 

虚拟按键, inputManager里的都是

Negative Button 

Positive Button 

Alt NegativeButton

Alt PositiveButton  备用

if(Input.GetButtonDown("Fire1"))

上面四个按钮设置一个都可以使用,

轴。有两个按键,意思是使用上面两种,

当主要的按键都设置了,会以设置的为主,没有的话就会使用备用的。

小键盘,上下左右,就是,up down left right

和w s a d齐名。

[展开全文]

鼠标事件检测。

按键有对应名字

Input.GetMouseButton()0左键,1,右键,2中键

GetMouseButtonDown

GetMouseButtonUp

 

[展开全文]

Input GetKey 键盘上按键

GetkeyDown(KeyCode.XXX)

GetKeyUp

GetKey

 

[展开全文]

Input输入类 键盘操作有关系

全都是静态的东西,

acceleration 陀螺仪,重力感应,

imeIsSelect, 输入法。

 

[展开全文]

使用PingPong方法来实现来回运动

Mathf.PingPong(flaot t,flaot length)

最大值是length,最小值默认是0,不能更改

t就是使用时间,也代表当前位置,速度。

Mathf.PingPong(0,5);到5之后又往小了变,到了0之后又变大到5.

cube.position = new Vector3(Mathf.pingPong(Time.time*speed,10))

    使用这个就要保证t自身是不断增大的。然后才能使得pingpong函数体现。

lerp两点之间,先快后慢,自己定义两个点

Movetowards,匀速运动,自己定义两个点

PingPong,两个点来回运动,最小点0位置默认,t代表当前位置,length代表长度,到达长度就向相反方向移动。

 

[展开全文]

MoveTowards 做匀速运动

Mathf.LerpAngle ,保证插值。

Mathf.MoveTowards(当前值,目标值,间隔);

匀速运动,

间隔改成负数就会远离目标。乘以Time.deltaTime.1秒1米。

保证不会超过目标值。

 

[展开全文]

游戏开发中的插值运算

Mathf.Lerp (flaot a,float b,flaot t)

a开始值,b结束值,t 0到1的一个比例,小于0按0算,大于1按1算。

越往后距离越慢,先快后慢,

[展开全文]

Mathf中常用的方法

Mathf.ColsestPowerOfTwo(10)返回最接近的 2 的幂值(2的平方值)

Marhf.deltaAngle(1080,90) 计算两个角度之间的最小夹角。 

Mathf.Floor(10.7);向下取整, FloorToInt,返回int类型

mathf.Exp(n) 代表e的n次方。

 

public static float Lerp (float a, float b, float t);

在 a 与 b 之间按 t 进行线性插值。

参数 t 限制在范围 [0, 1] 内。

当 t = 0 时,返回 t。\ 当 t = 1 时,返回 t。\ 当 t = 0.5 时,返回 a 和 b 的中点。

 

public static float LerpAngle (float a, float b, float t);

与 Lerp 相同,但是在值环绕 360 度时确保值正确插入。

参数 t 限制在范围 [0, 1] 内。假设变量 a 和 b 以度为单位。

public static float LerpUnclamped (float a, float b, float t);

t不受限制。想是多少是多少。

 

Mathf.Max(1,2)取得最大值。可以是两个数,可以是数组里的。

Mathf.Min(1,2)取得最小值,范围和max一样

Mathf.MoveToWards(float current, float target, float maxDelta) 用来做移动。将值 current 向 target 靠近。这本质上与 Mathf.Lerp 相同,

Mathf.Pow(float f,flaot p) 取得f的p次方

Mathf.Sqrt()  求平方根

 

 

 

 

[展开全文]

Mathf  数学方法

变量和方法全都是静态的。

PI,圆周率

Mathf.Deg2Rad 角度变成弧度

Mathf.Rad2deg 弧度转成角度

Mathf.Epsilon 非常小的小数,比0大,无限小

Mathf.INfinity 无限大的数字,

Mathf.NegativeInfinity 无线小的shu'zi

 

 

[展开全文]

OnMouseDown 鼠标按下

OnMouseDrag 鼠标拖动

OnMouseUp 鼠标抬起

OnMouseEnter 鼠标刚放在物体上

OnMouseOver 鼠标一直放在物体上

OnMouseExit  鼠标离开物体

物体必须有collider。不一定。标记为trigger。

还有ProjectSetting/Physics/Queries hit Triggers 勾选上。(如果标记未trigger)

OnMouseUpAsButton 抬起的时候触发,条件是按下和抬起时都是同一个物体。如果按下时在一个物体,抬起时不在,就会失效。用来处理单击。

 

[展开全文]

协程开启和关闭

StartCoroutine

StopCoroutine.暂停不住。

StopAllCoroutine

开启的时候使用方法名,关闭的时候就要使用方法名,

开启的时候使用方法名(),关闭的时候也一样。

成对。

方法1.定义一个ie,接受一下协程方法。

开的时候StartCoroutine(ie);可以传多个参数

关的时候StopCoroutine(ie);

方法2.

StartCoroutine("Function");只能传一个参数

StopCoroutine("Function");

[展开全文]

协程。实现一个颜色渐变效果。

yield return new WaitforSeconds(3f);

for(float i = 0;i<=1;i+=0.1f)

{

cube.getComponent<MeshRender>().material.color = new Color(i,i,i,i);

yield return new WaitForSecond(0.1f);

参数正常是1.

}

 

Color newColor = Color.Lerp(当前color,目标color,0.02f)

yield return new WaitForSeconds(0.02f);

 

Mathf.Abs()绝对值。

 

 

[展开全文]

协程,

普通方法调用从上到下。

1.一起执行,不会等。同步执行,

2.可以暂停,

IEnumerator changeColor()

{

yield return null;

}

StartCoroutine("方法名");

StartCoroutine(changecolor());

[展开全文]

Invoke("FunctionName",time); 

cancelInvoke (可以指定特定方法,不指定就是当前脚本全部);

invokeRepeating("FunctionName",firsttime,nexttime);

bool result = isInvoking ("FunctionName");

 

[展开全文]

有例子,在Scripting API里面

print 静态的。MonoBehaviour

查看组件是否激活,isActiveAndEnabled

设置 enabled = T/F

tag

gameobject

transform

name

print

当前表示this.

开两个inspecotr 进行赋值cao'zuo

 

 

[展开全文]

monobehaviour 总览

间接继承自component。

runinEditMode,在编辑器模式下运行,

【ExecuteInEditMode】加特性,某个类或者方法前加上,在编辑器下也会运行。

useGUILayout

Invoke 调用方法。

InvokeRepeating 

CancelInvoke()取消,取消在当前脚本的Invoke。

协程, 有例子。

StartCoroutine

StopCoroutine

StopAllCoroutine

组件是否激活,isActiveAndEnable

[展开全文]

得到组件的方法函数

target .GetComponent<>();

target.GetComponents<>();

GetCompontnetInChildren

GetComponentSInChildren游戏物体自身以及孩子们

GetComponentInParent

GetComponintsInParent<>所有父亲身上的指定组件

[展开全文]

游戏物体之间消息发送。

对象方法

SetActive 

Message.

SendMessage,

BroadCastMessage("方法名");调用方法。所有方法名这个,所有物体都进行使用。降低耦合性。互相调来调去。需要有接受者。

作用范围:当前物体以及所有孩子

target. BroadCastMessage("方法名",null,SendMessageOptions.DontRequireReceiver);规定后面是否必须要接受者。

接受的话需要状态处于激活。

target.SendMessage(“方法名”);不会去调用孩子。

只调用当前物体上的方法。

只针对某一物体上所有物体有这个方法就会调用。

target. BroadCastMessageUpWord 作用范围:当前物体以及所有父类。

Component,

[展开全文]

GameObject独有的静态方法

activeInHierarchy

activeself

layer

tag

静态查找

GameObject.Find("名字"); 遍历耗费性能。

GameObject.FindGameObjectWithTag("tag");效率高。

GameObject.FindGameObjectsWithTag("tag");

 

[展开全文]

授课教师

SiKi学院老师

课程特色

图文(1)
下载资料(2)
视频(71)