一、Unity调用先后顺序(图片来自Unity官方文档)
常用顺序为:Awake->Start-> OnTriggerXX->OnCollisionXX-> OnMouseXX->Update->OnGUI
*编辑器模式下Reset是第一级被调用的
*Awake Onable Reset都只调用了一次,OnGUI会一直刷新
二、Time.(秒为单位)
Time.deltaTime 1秒/实际帧调用,一般是计时器
Time.realtimeSinceStartup 从游戏开始计时的时间,暂停也计时.可测试比较两个函数执行N次的性能,声明一时间,函数执行后再声明一时间。两个值相减为耗费时间。
Time.timeScale = 3.0f 游戏时间增快减慢,暂停游戏=0
三、GameObject
新建物体,默认在原点出生
1.GameObject go = new GameObject("empty");
2.复制实例或Prefab
public GameObject prefab;
GameObject.Instantiate(prefab); 实例化Prefab基础属性或场景游戏物体
Instantiate(Object original,Transform parent,bool instantiateInWorldSpace);新建物体在父物体下,使用局部空间
3.GameObject.CreatePrimitive(PrimitiveType.Cube);仅能创建原始图形
添加组件
gameObject.AddComponent<组件名>();
GameObject 常用属性变量
1.atciveInHierarchy 常用,判断是否激活,子物体被影响。
activeSelf 可读不可改,子物体不会被影响激活状态
例:gameObject.SetActive(false);
gameObject
2.tag
3.Transform,GameObject必备组件,无法删除
静态方法可以通过类名直接调用,普通方法需要通过对象调用
GameObject.Find("名字") 会遍历场景内每个物体
GameObject[] gos = GameObject.FindGameObjectsWithTag(“”);
GameObject与Component继承于UnityEngine.Object的特性
Destroy(gameObjectm,5);5秒后销毁这个物体,统一放入垃圾池,确认无引用后再销毁
Destroy(this/rigidbody);销毁组件
DontDestroyOnLoad(transform.gameObject);场景跳转时候不会销毁
Object.FindObjectsOfType 搜索带有某组件的物体,返回GameObject/组件数组,不查找未激活游戏物体
Object.FindObjectOfType 搜索场景内某组件,找到一个就返回
Instantiate
GetComponents 只返回第一个
GetComponentInChildren 返回子物体下的所有组件
BroadcastMessage广播
例:
public GameObject target;
target.BroadcastMessage("Attrack",null,SendMessageOptions.DontRequireReceiver);
target身上的Attrack组件被调用,但场景内没有target组件不要报错。
target物体下的子物体如果有Attack组件也会被调用。
SendMessageUpwards物体下的父级及以上物体的Attack组件也会被调用。
四、MonoBehaviour继承自Component
[ExecuteInEditorMode]
Invoke("LauchProject",2);2m后调用某方法
Invoke("Attack",4,2); 4秒后开始,每间隔2m调用一次
startCoroutine协程
1.Coroutine返回值是IEnumerator
2.使用yield return new WaitForSeconds(3);暂停协程三秒
返回参数时使用yield return null/0;
3.使用StartCoroutine(Attach(player01));来调用协程方法
开启与停止需要用相同的方式:方法名或者调用方法的IEmumerator。
五、鼠标相关时间函数,检测的物体要有Collider
OnMouseDown 鼠标按下
OnMouseUp 鼠标抬起,哪个物体上按下的,算作在哪个物体上触发
OnMouseDrag 鼠标按下时划过,哪个物体上按下的,算作在哪个物体上划过
OnMouseEnter 鼠标进入
OnMouseExit 鼠标划出
OnMouseOver 划过
OnMouseUpAsButton 仅在同一个物体上按下并抬起时候触发
--End--
文章思路来源:Siki学院免费教程