Unity引擎基础

来源:互联网 发布:染发剂什么牌子好 知乎 编辑:程序博客网 时间:2024/05/23 21:23

1.        继承MonoBehaviour的类称为运行类,不能被实例化。以下这些方法不是MonoBehaviour的成员,而是通过反射调用的一些事件。脚本的生命周期如下:


1)        Awake:在Awake中做初始化操作,一般初始化public成员

2)        OnEnable:每次激活脚本都会调用OnEnable

3)        Start:在第一次调用Update之前调用一次Start,整个生命周期start只会调用一次,在Start中也可以做一些初始化

4)        Update:每帧调用一次Update

5)        LateUpdate:在Update方法调用之后调用

6)        OnDisable:脚本取消激活状态后调用

7)        OnDestroy:脚本被销毁时调用一次

8)        OnGUI:持续调用,IMGUI代码需要写在OnGUI方法中

9)        OnFixedUpdate:以固定的频率调用,不会受到图像刷新频率的影响,一般会把处理物理代码放在这里

2.        Input:获取用户事件需要使用input类。

1)        GetKey()检测持续按键事件,getKeyDown()按下事件,getKeyDown()弹起事件。注意print只能在monoBehaviour子类中使用,其他情况使用Debug.Log()打印。

2)        GetMouseButtonDown(),参数0表示左键,参数1表示右键,2表示中键

3.        GameObject:gameObject获取的是当前脚本所挂载的游戏对象,一般来说在属性列表中可以看到或修改的都可以在脚本中获取并修改

1)        gameObject获取name,tag等

2)        gameObject.GetComponent/AddComponent获取/增加游戏对象身上的组件

3)        使用GameObject可以获取游戏对象,销毁对象操作等,都是静态方法

4.        Vector3:

1)        Vector3.up=(0,1,0)表示世界坐标系下y轴正方向单位向量,Vector3.down表示世界坐标系下y轴负方向单位向量

2)        Vector3.right=(0,1,0)表示世界坐标系下x轴正方向单位向量,Vector3.left表示世界坐标系下x轴负方向单位向量

3)        Vector3.forward表示世界坐标系下z轴正方向单位向量,Vector3.back表示世界坐标系下z轴负方向单位向量

4)        Vector.zero表示世界坐标系下坐标原点

5)        获取单位向量:v.Normalize(),v自身长度变化为1,v.normalized返回归一化的向量,自身不变化

6)        求两个向量之间夹角Vector3.Angle(from,to),距离Vector3.Distance(pos1,pos2),点成Vector3.Dot(v1,v2),叉乘Vector3.Cross(v1,v2)

5.        Transform:控制游戏对象的位置,旋转和缩放

1)        transform.position世界坐标系中位置,localPosition局部坐标系位置

2)        transform.rotation和transform.localRotation对游戏对象进行旋转,一般不直接修改四元数

3)        transform.localScale控制游侠对象的缩放

4)        在Update中移动和旋转对象使用Translate和Rotate

5)        transform.parent获取当前游戏对象父对象的Tranform组件

6)        transform.find(“”)获取名叫””的子对象的

6.        常用的时间控制类Time和数学类Mathf

1)        Time.time:游戏开始到当前帧所用时间,deltaTime两帧之间的间隔时间,利用deltaTime实现每秒移动或旋转transfrom.Rotate(Vector3.up,Time.deltaTime*30);实现每秒转动30度

2)        Time.timeScale表示时间流逝的快慢;0表示时间暂停,1表示时间正常,2表示正常的两倍

3)        Mathf中常用:Abs, Max,Min等

7.        预设体:预设体使游戏对象和资源重复使用,将游戏对象直接拖到project中的Asset中。通过预设体动态创建游戏对象:Instantiate,该方法返回的是Object类型,如果要转换成GameObject来使用,可以Instantiate() as GameObject;

8.        鼠标事件:OnMouseDown(), OnMouseUp(), OnMouseDrag()持续按下左键, OnMouseEnter()鼠标进入对象内部, OnMouseExit(),OnMouseOver(), OnMouseUpAsButton()像点击button一样点击游戏对象,即左键按下移出对象后再弹起左键,该方法是不会调用的

9.        刚体:添加rigidBody组件,Drag表示空气阻力,AngularDrag表示旋转阻力,Is Kinematic表示是否使用运动学,即使用transform改变运动,不能同时使用刚体和Kenimatic,所以一般不勾选,除非实在要使用transform改变对象运动,interpolate进行插值运算解决对象抖动问题

10.    刚体和Collider:

 r.AddForce()添加力,r.AddTorque()添加力矩/扭矩使对象受力旋转,r.AddForceAtPosition()在某个位置添加一个力,r.AddExplosionForce()爆炸力

Collider:进行碰撞检测,必须都有Collider,并且至少有一个是刚体

11.    碰撞和触发事件:

碰撞相关的三个事件:OnCollisionEnter()碰撞开始,OnCollisionExit()碰撞结束,OnCollisionStay()碰撞进行中

触发器相关事件:当Is Trigger被选中时,碰撞器失效变成触发器。OnTriggerEnter(), OnTriggerExit(), OnTriggerStay()

12.    物理材质:只有具有Collider的对象才能添加物理材质

13.    射线:使用射线获得3d场景中鼠标位置:

1)        创建射线;

2)        发射射线:RayCast,RayCastHit中获取碰撞点的信息

0 0
原创粉丝点击