Unity3D (C#)常用函数备忘

一、Input类 
1.Input.GetKeyDown(KeyCode) 获取键盘按键按下,Input.GetKey(KeyCode)键盘按键按住不放,Input.GetKeyUp(KeyCode)键盘按键松开(运用多在循环函数Update、FixedUpdate、各种脚本生命周期函数) 
2.Input.GetMouseButton(int),Input.GetMouseButtonDown(int),Input.GetMouseButtonUp(int)分别在鼠标键按住、鼠标键按下、鼠标键松开执行,int可取0、1、2,0:鼠标左键,1:鼠标右键,2:鼠标中间键

二、Vector3[三维向量] 
forward、 back、 left、 right 
方法:MoveTowards(当前位置,目的位置,速度值); 
返回值:Vector3,该方法与Lerp()几乎一样,不过这个是百分百会去到目的地,而Lerp是无限接近目的地。 
Vector2[二维向量] 
up down left right 
方法:MoveTowards(参数同上,返回值Vector2)

三、Color[颜色] 
red、green、blue…

四、KeyCode[键码] 
键盘字符编码(百度)

五、Space[空间] 
Self[自身坐标系]、World[世界坐标系]

六、GameObject[游戏物体] 
属性:name[游戏物体名称]、tag[游戏物体标签] 
方法:GetComponent();获取游戏物体身上的组件 
Find(string);通过名字查找游戏物体S 
FindGameObjectsWithTag(string);通过标签查找N个游戏物体S 
Instantiate(Object,Vector3(Position),Quaternion);实例化[克隆]游戏物体(预制体)S 
Destroy(Object,float);定时销毁指定游戏物体S 
Destroy(Object);立刻销毁指定游戏物体S 
SendMessage(string);执行该游戏物体身上的指定名称的函数 
AddComponent();给游戏物体添加组件

PS:游戏物体名称是唯一的,标签是不唯一的。 
//组件类介绍 
七、Transform[变换] 
属性:Position[当前物体的位置]、Parent[当前物体的父物体] 
方法:Translate(Vector3,Space);移动物体的位置[Vector3指定移动方向、Space指定方向坐标系类型] 
\\\\Rotate(Vector3,Float);指定轴向和角度旋转物体,Float指定转动角速度大小。 
LookAt(Vector3);朝向世界中的一个点 
FindChild(string);在当前物体的子物体中查找 
GetComponentsInChildren();获取所有子物体的某个组件(包含父物体自身(索引号:0),用Transform[]保存) 
SetParent(Transform);将当前的物体设置为另一物体的子物体(参数为父物体的Transform组件)

八、Rigidbody[刚体] 
方法:MovePosition([Position]+Vector3);刚体移动物体的位置 
AddForce(Vector3,ForceMode);给刚体添加力,世界坐标系 
AddRelativeForce(Vector3,ForceMode);给刚体添加力,物体坐标系.

九、ForceMode[力模式] 
Acceleration[加速度]、Force[作用力(普遍)]、Impulse[冲击力]在这种模式,力的单位参数被应用于刚体作为质量*distance/time。[与质量有关(一般状态)] 
VelocityChange[速度变化]在这种模式,力的单位参数被应用于刚体作为distance/time。[与质量无关(真空状态)]

十、脚本事件函数 
10.1、“脚本生命周期事件” 
Awake();唤醒事件,执行1次 
OnEnable();启动时间,执行1次 
Start();开始事件,执行1次 
FixedUpdate();固定更新时间,执行物体操作,0.02秒执行1次 
Update();更新事件,每帧执行1次 
LateUpdate();稍后更新事件,执行N次 
OnGUI();GUI渲染事件,执行N次 
OnDisable();禁用事件,执行1次 
OnDestroy();销毁事件,执行1次

10.2、 鼠标事件 
(对象是游戏物体) 
OnMouseEnter();鼠标进入 
OnMouseExit();鼠标离开 
OnMouseDown();鼠标按下[单击]

扫描二维码关注公众号,回复: 2288586 查看本文章

10.3、 碰撞事件 
(对象是游戏物体(需带碰撞面)) 
OnCollisionEnter(Collision);碰撞开始 
OnCollisionExit(Collision);碰撞结束 
OnCollisionStay(Collision);碰撞进行中 
Collision[碰撞] 
属性:gameObject;与当前物体碰撞的物体

10.4、 触发事件 
(对象是游戏物体(需带碰撞面(可选触发类型)) 
OnTriggerEnter(Collider);触发开始 
OnTriggerExit(Collider);触发结束 
OnTriggerStay(Collider);触发进行中 
Collider[碰撞体] 
属性:gameObject;与当前物体碰撞的物体

十一、 Camera[摄像机] 
属性:main:代表tag为”MainCamera”的摄像机 
方法:ScreenPointToRay(Vector3)屏幕点转化为射线,起点为摄像机,终点为参数 
使用方法: 
Ray ray; 
ray = Camera.main.ScreenPointToRay(Input.mousePosition);//创造出一条从摄像机到鼠标点击位置的射线

十二、Ray[射线]相关结构体 
RaycastHit[碰撞信息] 属性:point(Vector3类型)碰撞点位置 ,collider[碰撞体]

十三、Physics[物理] 
方法:Raycast(Ray,out RaycastHit):射线碰撞监测 
使用方法:

if (Physics.Raycast(ray, out hit))//检测碰撞,若碰到了返回碰撞点信息给hit
{
    //进行对碰撞体处理操作
}
  • 1
  • 2
  • 3
  • 4

十四、 Debug[调试] 
DrawRay(Vector3,Vector3,Color);绘制射线在Scene不可见 
起点 (终点-起点) 颜色 
DrawLine(Vector3,Vector3,Color);绘制一根线在Scene可见 
起点 终点 颜色 
终点-起点=方向

十五、 LineRenderer[线渲染器] 
方法:SetPosition(int ,Vector3)设置点的位置 
int:可取0[线起点] 1[线终点] 
Vector3代表位置

十六、AudioSource[音频源] 
Play()播放 
Stop()停止 
Pause()暂停

十七、Screen[屏幕] 
width [宽度]、height [高度]

十八、Time[时间] 
time[游戏时长] 
deltaTime[游戏增量] 
timeScale[时间缩放] 
游戏暂停方式:Time.timeScale=0; 
当Time.timeScale=0时,Time.deltaTime=0,所有与Time.deltaTime有关的值都变为0,当前场景依然在渲染,若有一些不与Time.deltaTime有关的动作,那么这些物体的动作不会受到影响。

十九、Mathf[数学] 
Abs()取绝对值 
Max()取最大值 
Min()取最小值 
Round()四舍五入 
Lerp() 插值运算(实现平滑效果、跟踪等) 
Lerp(值A,值B,比例C);满足条件:B>=A,C∈[0,1]. 
返回值:A+(B-A)*C

二十、Random[随机数] 
Range(min,max);在min和max范围内取一随机数S

二十一、MonoBehaviour[Mono行为] 
Invoke方法: 
Invoke(string,float);多少秒后执行某个函数(只会调用一次) 
InvokeRepeating(string,float,float);(第二个参数)秒后开始执行周期性执行某函数,周期为(第三个参数) 
CancelInvoke();取消这个脚本中的所有的Invoke调用

协程方法:(协同程序) 
StartCoroutine(String);开启指定名称的协程 
StopCoroutine(String);停止指定名称的协程 
协同程序: 
IEnumerator返回值类型 
yield return new WaitForSeconds(float);//等待多少秒后继续执行 
关于协同程序解释: 
主进程和子进程,协同程序相当于从主进程诞生的子进程,它受主进程影响,但是它不影响主进程执行。

二十二、Quaternion[四元数] 
属性:identity:无旋转

二十三、Animation、Animation Controller以及Animator 
Animation是可播放动画,Animation Controller是动画控制器,Animator组件是动画管理器用于管理一个物体身上的动画状态。Animator必须有Aniamtion Controller,Animation Controller必须有Animation,其中关键的动画控制器能设置参数,并且可在代码中通过:animator.Setxxx来设置不同类型的参数值,其中第一个函数参数是参数名字符串,第二个是数值。 
其中,设置参数目的就是为了能让在同一个动画控制器中的不同动画进行有规律地转换,在Animator窗口(选中你要设置的物体,点击菜单栏Window-Animator打开)选中一个动画(Animation),右击点击Make Transition出现一个箭头,再选中其他一个动画,这样就表示一个动画转换到另一个动画。 
在2个动画之间的箭头可设置各种参数,其中Conditions就是需要用到我们设置好的参数,它只有Greater和Less即大于和小于表示。 
设置参数:在Animator窗口左边有Parameters点击进入后,在点击+.即可添加参数,参数名是在C#代码进行赋值的时候要用到的。 
在设置一个箭头的Inspector窗口中Settings中的Can Transition To Self一般都要去除勾选,即播放自身动画时不可调用自身动画。

二十四、Nav Mesh Agent导航系统 
Speed物体速度,可通过该组件navMeshAgent.velocity.magnitude获取和设置。 
Angular Speed角速度,即物体旋转快慢,越高越快,否则反之。 
导航系统需要导航网格配合才有用途,点击Window-Navigation,出现的Navigation面板中点击Bake,再点击里面的Bake按钮即可自动为场景设置好导航网格。 
某些地方是不需要设置导航网格的,那么需要选中那些物体(要带Mesh Renderer组件),在Inspector面板上的Static下拉列表中的Navigation Static勾选上,那么就无法为这个物体设置导航网格,如果要设置的话,就把这个Navigation Static去除勾选即可。

二十五、Collider组件的Material 
Physics Material(2D): Friction设置摩擦力,Bounciness设置弹力 
将Physics Material(2D)赋值给Collider组件中的Material属性,令物体拥有摩擦力和弹力。

猜你喜欢

转载自blog.csdn.net/yuanpan/article/details/80803363