unity常用api整理
1.事件函數(shù)。
Reset() :重置-被附加腳本時(shí)、在游戲物體的組件上按Reset時(shí)會(huì)觸發(fā)該事件函數(shù)
Start() :開始-在游戲初始化時(shí)會(huì)執(zhí)行一次
Update() :更新-每一幀都會(huì)運(yùn)行這個(gè)方法
FixedUpdate():固定更新-會(huì)在指定幀調(diào)用該方法多少次
LateUpdate(): 后期更新-晚于Update的運(yùn)行順序,但是FPS和Update是一樣的
Awake() Start() :喚醒-都是在游戲物體初始化運(yùn)行一次,但是Awake的運(yùn)行順序高于Start的,并且只要腳本中存在Awake方法,則無論是否掛載了該腳本都會(huì)執(zhí)行該方法
OnEnable():啟用-當(dāng)將物體的SetActive設(shè)置為true時(shí)就會(huì)自動(dòng)調(diào)用調(diào)用該方法
OnDestory(): 銷毀,關(guān)閉-當(dāng)關(guān)閉游戲則會(huì)調(diào)用該方法
2.Time類時(shí)間函數(shù)。
Time.time 時(shí)間-表示從游戲開發(fā)到現(xiàn)在的時(shí)間,會(huì)隨著游戲的暫停而停止計(jì)算
Time.timeSinceLevelLoad 從當(dāng)前場(chǎng)景加載到現(xiàn)在的時(shí)間-表示從當(dāng)前Scene開始到目前為止的時(shí)間,也會(huì)隨著暫停操作而停止
Time.deltaTime 增量時(shí)間-表示從上一幀到當(dāng)前幀時(shí)間,以秒為單位?!疽话阌脕砜刂平巧?、動(dòng)畫的運(yùn)動(dòng)】
Time.frameCount 總幀數(shù)
Time.realtimeSinceStartup 自開始后的真實(shí)事件-表示自游戲開始后的總時(shí)間,即使暫停也會(huì)不斷的增加
3.GameObject類函數(shù)。
GameObject go=new GameObejct("游戲物體名"); //游戲?qū)ο?一般是用來創(chuàng)建空的游戲來存放其他東西的
GameObject.Instantiate(prefab) //示例-根據(jù)Prefab或者是另外一個(gè)游戲物體來創(chuàng)建(克隆Colon)
為游戲物體添加組件, 其中組件可以是我們自己自定義的腳本GameObject.AddComponent<組件名>
GameObject.activeSelf 激活自身-自身的激活狀態(tài),與父類無關(guān),只與自身有關(guān)
GameObject.tag 標(biāo)簽-游戲物體的tag標(biāo)簽,具體的由程序員自定義設(shè)置
GameObject.SetActive(false/true) 設(shè)置激活狀態(tài)-通過參數(shù)的控制來設(shè)置其游戲物體的激活狀態(tài)
name: 名字-名字,調(diào)用該變量,則無論是通過GameObject還是Component都是返回游戲物體的名字
Destroy() :刪除-刪除游戲物體,但是不會(huì)立馬在unity中刪除,而是會(huì)先進(jìn)行回收
FindObjectsType<> : 尋找物體類型-通過類型來進(jìn)行查找,是進(jìn)行全局的查找
FindGameObjectWithTag :尋找?guī)в袠?biāo)簽的游戲物體-如果查到的是多個(gè),則只返回查找到的第一個(gè)
FindGameObejctsWithTag 尋找?guī)в袠?biāo)簽的游戲物體們-返回查找到的游戲物體集合
Cube cube = target.GetComponent<Cube>(); 得到組件-返回一個(gè)對(duì)應(yīng)的組件
Cube[]cc= target.GetComponents<Cube>(); 得到組件們-返回該游戲物體上所有符合條件的組件數(shù)組
4.MonoBehaviours。
enabled: 使-返回該組件是否被激活或者是被禁用,可以通過該變量來進(jìn)行設(shè)置
isActiveAndEnabled: 是激活且能夠使用-只能返回該組件是否激活的標(biāo)志位,不能設(shè)置該變量,為只讀的
tag :標(biāo)簽-該組件所對(duì)應(yīng)的游戲物體的標(biāo)簽
name :名字-該組件所對(duì)應(yīng)的游戲物體的名字
Invoke("方法1",float time): 調(diào)用-在等待time的時(shí)間后調(diào)用方法1
bool i= IsInvoking("方法1") 正在被調(diào)用-如果方法運(yùn)行則返回true,反之返回false
InvokeRepeating("方法1",time,number): 重復(fù)調(diào)用-等待time時(shí)間后,會(huì)重復(fù)開始運(yùn)行方法1,每秒鐘運(yùn)行number次
CancelInvoke() 取消調(diào)用-會(huì)暫停通過Involve/InvokeRepeating的運(yùn)行
5.協(xié)程。
定義協(xié)程:IEnumerator 方法名()
{
yield return 0/null ;
yield return new WaitForSeconds(1.0f); //協(xié)程-等待一定時(shí)間在運(yùn)行下面的代碼
}
開啟協(xié)程:StartCoroutines(方法名());
說明:協(xié)程開啟會(huì)繼續(xù)執(zhí)行下面代碼,不會(huì)等協(xié)程方法運(yùn)行完再執(zhí)行接下來的方法
StopAllCoroutines() 停止所有的協(xié)程,不管你是怎么調(diào)用的
6.OnMouse。
OnMouseDown(): 鼠標(biāo)按下-當(dāng)鼠標(biāo)按下的時(shí)候觸發(fā),按一次觸發(fā)一次
OnMouseDrag(): 鼠標(biāo)拖拽-當(dāng)鼠標(biāo)按住不放的時(shí)候一直觸發(fā),是每一幀進(jìn)行觸發(fā)
OnMouseUp(): 鼠標(biāo)抬起-當(dāng)鼠標(biāo)抬起的時(shí)候觸發(fā),只執(zhí)行一次
OnMouseEnter(): 鼠標(biāo)進(jìn)入-當(dāng)鼠標(biāo)進(jìn)入的時(shí)候觸發(fā),進(jìn)入一次觸發(fā)一次
OnMouseOver(): 鼠標(biāo)在上方-當(dāng)鼠標(biāo)在觸發(fā)物體的上面時(shí),則一直觸發(fā)
OnMouseExit(): 鼠標(biāo)離開-當(dāng)鼠標(biāo)移出的時(shí)候觸發(fā)
7.Mathf類:所有的成員均為靜態(tài)的。
Mathf.Abs() 返回絕對(duì)值的
Mathf.Pow(i,j) 取得i的j次方
Mathf.MoveToWards() 一般用來做移動(dòng)控制,是勻速的運(yùn)動(dòng),加速度固定的
Mathf.Lerp() 差值運(yùn)算,一般是用來控制動(dòng)畫、運(yùn)動(dòng),越往后運(yùn)行的越慢的
8.Input輸入類:
GetKey() 得到按鍵-按鍵一直按著時(shí)觸發(fā)
GetKeyDown 按鍵按下-按鍵被按下那一刻進(jìn)行觸發(fā)
GetKeyUp 按鍵抬起-按鍵被按下后抬起時(shí)觸發(fā)
GetMouseButton(0/1/2) 得到鼠標(biāo)按鍵-1:左鍵 2:右鍵 3:中鍵 鼠標(biāo)一直按著時(shí)觸發(fā)
GetMouseButtonDown() 鼠標(biāo)按下-鼠標(biāo)按下那一刻觸發(fā)
GetMouseButtonUp() 鼠標(biāo)抬起-鼠標(biāo)抬起的那一刻時(shí)觸發(fā)
Getaxis("虛擬軸名") 通過按下的虛擬軸來返回-1~1之間的值
9.Vector2:二維向量
magnitude: 大小-返回向量的長度
normalized:單位化-返回這個(gè)向量長度為1的矢量,不管這個(gè)向量多長,也是返回1的矢量
Normalize() 無參數(shù)的,也是向量化,但是調(diào)用該方法會(huì)改變?cè)蛄恐?,使其的值被向量?/p>
10.四元數(shù) Quaternion
.eulerAngles 將四元數(shù)轉(zhuǎn)變?yōu)闅W拉角
Euler() 將歐拉角轉(zhuǎn)變?yōu)樗脑獢?shù)
11.Rigidbody:剛體-剛體組件,控制角色的移動(dòng)
MoveRotation 旋轉(zhuǎn)-用來控制剛體的旋轉(zhuǎn)
AddForce() 增加力-為剛體添加力
12.Camera:相機(jī)組件
Ray ray = cameraMain.ScreenPointToRay(Input.mousePosition); //獲得相機(jī)到鼠標(biāo)之間的射線
RaycastHit hit; //用來存放射線檢測(cè)到的游戲物體的信息的
bool temp = Physics.Raycast(ray, out hit); //進(jìn)行射線檢測(cè)
13.SceneManager場(chǎng)景類
SceneManager.LoadScene() 加載場(chǎng)景-加載下一個(gè)場(chǎng)景,一般是用在另一個(gè)場(chǎng)景不是太大的情況下
sceneCount 場(chǎng)景個(gè)數(shù)-獲得當(dāng)前加載的場(chǎng)景個(gè)數(shù)
GetActiveScene() 得到激活場(chǎng)景-獲取已經(jīng)加載的當(dāng)前場(chǎng)景的信息
GetSceneAt(index) 加載index索引的場(chǎng)景
activeSceneChanged 激活場(chǎng)景變更-當(dāng)有新場(chǎng)景被加載的時(shí)候就會(huì)調(diào)用這個(gè)事件
sceneLoaded 場(chǎng)景加載-當(dāng)有新場(chǎng)景加載完成的時(shí)候就會(huì)觸發(fā)這個(gè)事件
14.射線檢測(cè):一般射線檢測(cè)要在射線檢測(cè)的范圍內(nèi),并且被檢測(cè)物體要有Collider
Ray ray=new Ray(起點(diǎn),方向)
PaycastHit hit; //hit中存放的是射線檢測(cè)的碰撞信息
Ray ray = new Ray(this.transform.position + transform.forward, transform.forward); //創(chuàng)建射線
RaycastHit hit; //存儲(chǔ)射線檢測(cè)到的游戲物體信息
15.CharacterController角色控制器
.SimpleMove(【vector3】) 簡單移動(dòng)
.isGrounded 在地面上-判斷是否到地面上,bool值
文章來源:Unity常用API - 簡書 (jianshu.com)