Unity API常用方法和类(一)

mac2024-10-05  27

一、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学院免费教程

最新回复(0)