Monobehaviour类
Variable
runInEditMode 在编译器模式下运行
Public Function
(1) Invoke:调动一个方法(float time 等待时间)
(2) InvokeRepeating:重复调用某方法
(3) CancelInvoke:取消在当前脚本里面的Invoke调用
(4) IsInvoking:判断是否正在调用
测试如下:
(5) StartCoroutine:开始执行协程方法
①使用方法名②使用方法调用
(6) StopCoroutine:停止协程方法
①使用方法名②使用方法调用
(7) StopAllCoroutines:停止所有协程方法
Coroutine协程方法和普通方法执行时的区别:
如果执行的是普通方法,那么等这个方法执行完才会继续向下执行如果执行的是协程方法,则不必等协程方法执行完,就会向下执行(1协程方法不会阻塞当前方法的执行进程;2协程方法本身可以进行暂停)
Coroutines
1,返回值是IEnumerator
2,返回参数的时候使用yield return
3,协程方法的调用StartCoroutine(method())
测试如下:
从测试中我们可以看出,先执行print(“hahaha”),后执行了print(“hahaColor”)。
我们可以利用协程做一个颜色渐变的控制,代码如下:
void Update()
{
if (Input.GetKeyDown(KeyCode.Space))
{
StartCoroutine("Fade");
}
}
IEnumerator Fade()
{
for(float i=0;i<=1;i+=0.1f)
{
cube.GetComponent<MeshRenderer>().material.color = new Color(i,i,i,i);
yield return new WaitForSeconds(0.02f);
}
}
Static function
Print:输出
Inherit member
(1) isActiveAndEnable:判断组件是否激活
(2) enable=true/false:设置游戏物体激活或禁用
(3) tag:标签
(4) gameObject:获得这个组件所在的游戏物体
(5) transform:获得这个组件所在游戏物体的transform组件
(6) name:获得游戏物体的名字
测试如下:
Massage
OnMouse开头:
OnMouseDown:当鼠标按下调用 用在GUIElement,Collider
OnMouseUp:当鼠标抬起调用
OnMouseDrag:拖拽在哪个物体身上点击,抬起的时候也在那个物体上触发(条件1、trigger为true 2、Queries HitTriggers为true)
OnMouseEnter:鼠标移上去
OnMouseExit:鼠标移出
OnMouseOver:鼠标在物体上面
OnMouseUpAsButton:当鼠标按下和抬起在同一物体身上时才会触发,触发时机是在鼠标抬起时触发
我们先做一下测试:
Mathf类
Static Variables
PI:圆周率
Deg2Rad:度数变成弧度
Rad2Deg:弧度变成度数
Epsilon:无限小的正数
Infinity:正无穷
NegativeInfinity:负无穷
Static Functions
ABS:取绝对值
Ceil:向上取整(返回float类型)
CeilToInt:向上取整(返回int类型)
*Clamp:夹紧(float value,float min,float max):value小于min,返回min;value大于max,返回max;value位于中间,返回value(经常用于返回范围内的值)
我们可以简单测试一下Clamp:
//Debug.Log(Mathf.Clamp(Time.time, 1.0f, 3.0f));
Clamp01:默认值,默认范围0-1ClosestPowerOfTwo 2的n次方
DeltaAngle:两个角度之间最小夹角
Exp:e的次数
Floor:向下取整 返回float类型
FloorToInt:向下取整 返回int类型
*Lerp:插值运算(float a,float b,float t)a b代表一个范围,t是0和1之间的数。比例运算
我们简单测试一下Lerp:随着t的变化,输出变化
//print(Mathf.Lerp(a, b, t));
Max:取最大值
Min:取最小值
MoveTowards:移动的控制
Pow:(float f,float p)取f的p次方
Sqrt:取平方根
MoveTowards:在范围内匀速移动
PingPong:在范围内来回运动(类似于乒乓球运动)
大家可以利用下面的代码做一些简单的测试:
//float x = cube.position.x;
//float newX = Mathf.Lerp(x,10,0.1f);
//float newX = Mathf.MoveTowards(x,10,Time.deltaTime*speed);
//float newX = Mathf.MoveTowards(x, 10, 0.1f);
//cube.position = new Vector3(newX,0,0);
//print(Mathf.MoveTowards(a, b, t));
//cube.position = new Vector3(Mathf.PingPong(Time.time*speed,10),0,0);
Input类
Static Variables
acceleration:陀螺仪 通过重力感应控制游戏物体
imeIsSelect:判断输入法是否被选择
anyKey:任何键按下时一直返回true
anyKeyDown:任何键按下都会返回true
mousePosition:获取鼠标在屏幕上的位置 (像素位置)
StaticFunction
GetKey:按键按中
GetKeyDown:按键按下
GetKeyUp:按键抬起
GetMouseButten:鼠标按键按中
GetMouseButtenDown:鼠标按键按下
GetMouseButtenUp:鼠标按键抬起
GetButten:虚拟按键按中
GetButtenDown:虚拟按键按下
GetButtenUp:虚拟按键抬起(Edit里project里Input中Axes中的虚拟按键)
GetAxis:根据轴控制移动或旋转(可以模拟物体的加速运动)
GetAxisRaw: 根据轴控制移动或旋转(没有渐变效果)