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);刚体移动物体的位置
unity3d animationAddForce(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();⿏标按下[单击]
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.usePosition);//创造出⼀条从摄像机到⿏标点击位置的射线
⼗⼆、Ray[射线]相关结构体
RaycastHit[碰撞信息] 属性:point(Vector3类型)碰撞点位置 ,collider[碰撞体]
⼗三、Physics[物理]
⽅法:Raycast(Ray,out RaycastHit):射线碰撞监测
使⽤⽅法:
1 2 3 4if (Physics.Raycast(ray, out hit))//检测碰撞,若碰到了返回碰撞点信息给hit {
//进⾏对碰撞体处理操作
}
⼗四、 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属性,令物体拥有摩擦⼒和弹⼒。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论