SiKi学院 Unity中常用api学习笔记(001-014)
Api?應(yīng)用程序編程接口
前言
筆記是看siki學(xué)院中《Unity中常用api》的學(xué)習(xí)筆記
課程地址:??http://www.sikiedu.com/my/course/59
強(qiáng)烈推薦大家去看老師的課
?
學(xué)習(xí)方法(001)
學(xué)習(xí)中切忌死記硬背,尤其是在學(xué)習(xí)代碼中,要實(shí)際動(dòng)手操作一下。
常用的方法經(jīng)常使用,不常用的方法留下印象(看Unity文檔和api手冊(cè))。
什么是事件函數(shù)(002)
unity中創(chuàng)建的所有腳本,都默認(rèn)繼承MonoBehaviour。
MonoBehavior——Behavior——Component——Object(繼承關(guān)系)
默認(rèn)有Start()方法? ?開始執(zhí)行一次;和Update()方法? 每幀可執(zhí)行多次。
事件函數(shù)的執(zhí)行順序(Unity中文手冊(cè)):https://docs.unity.cn/cn/current/Manual/ExecutionOrder.html
事件函數(shù)的執(zhí)行時(shí)機(jī)和先后順序(004)
1.Editor
Reset函數(shù),編輯前就會(huì)調(diào)用執(zhí)行。
2.Initialization
Awake函數(shù),Onenable函數(shù)(onDisable函數(shù)后也可以調(diào)用),Start函數(shù)在場(chǎng)景啟用或者物體被實(shí)例化后,就會(huì)被調(diào)用。
3.Physics
FixedUpdate函數(shù),每秒固定調(diào)用一定次數(shù)(多次)。//與幀數(shù)不掛鉤
OnTriggerXXX函數(shù),OnCollisionXXX函數(shù);(用于觸發(fā)器和碰撞器)
yleld?WaltForFixedUpdate函數(shù)。
4.Input?events
OnMouseXXX函數(shù),輸入事件(鼠標(biāo))。
5.Game?logic
Update函數(shù),每幀運(yùn)行一次函數(shù)。
(Internal?animatiom?update)
LateUpdate函數(shù)。
6.Scene?rendering
(與場(chǎng)景渲染有關(guān)的函數(shù))
7.Gizmo?rendering
OnDrawGizmos函數(shù),輔助線
8.GUI?rendering
OnGUI函數(shù),(現(xiàn)在基本不用,用UGI)
9.Pausing
OnApplicationPause函數(shù),暫停的時(shí)候運(yùn)行
10.Disable/enable
OnDisable函數(shù)
11.Decommissioning
退出場(chǎng)景時(shí)運(yùn)用,物體會(huì)被銷毀
OnApplicationQuit函數(shù),OnDisable函數(shù),?OnDestroy函數(shù)。
?
Time類中的靜態(tài)變量介紹(005)
Unity中文手冊(cè)(Time類):https://docs.unity.cn/cn/current/ScriptReference/Time.html
| captureFramerate | 減慢游戲播放時(shí)間,以便在幀之間保存屏幕截圖。 |
| deltaTime | 完成上一幀所用的時(shí)間(以秒為單位)(只讀)。 |
| fixedDeltaTime | 執(zhí)行物理和其他固定幀率更新(如 MonoBehaviour 的 FixedUpdate)的時(shí)間間隔(以秒為單位)。 |
| fixedTime | 最近一次 FixedUpdate 已啟動(dòng)的時(shí)間(只讀)。此為自游戲啟動(dòng)以來的時(shí)間(以秒為單位)。 |
| fixedUnscaledDeltaTime | 從上一個(gè)固定幀到當(dāng)前固定幀的獨(dú)立于 timeScale 的時(shí)間間隔(以秒為單位)(只讀)。 |
| fixedUnscaledTime | 最近一次 FixedUpdate 已啟動(dòng)的獨(dú)立于 TimeScale 的時(shí)間(只讀)。此為自游戲啟動(dòng)以來的時(shí)間(以秒為單位)。 |
| frameCount | 已經(jīng)過的總幀數(shù)(只讀)。 |
| inFixedTimeStep | 如果在固定時(shí)間步長回調(diào)(如 MonoBehaviour 的 FixedUpdate)內(nèi)調(diào)用,則返回 true,否則返回 false。 |
| maximumDeltaTime | 幀可以耗用的最長時(shí)間。物理和其他固定幀率更新(如 MonoBehaviour 的 FixedUpdate)將僅在每幀的該持續(xù)時(shí)間內(nèi)執(zhí)行。 |
| maximumParticleDeltaTime | 幀可以在粒子更新上耗用的最長時(shí)間。如果幀耗用的時(shí)間超過該值,則將更新拆分為多個(gè)較小的更新。 |
| realtimeSinceStartup | 游戲開始以來的實(shí)際時(shí)間(只讀)。 |
| smoothDeltaTime | 經(jīng)過平滑處理的 Time.deltaTime(只讀)。 |
| time | 該幀開始的時(shí)間(只讀)。此為自游戲啟動(dòng)以來的時(shí)間(以秒為單位)。 |
| timeScale | 時(shí)間流逝的縮放。可用于慢動(dòng)作效果。 |
| timeSinceLevelLoad | 該幀開始以來的時(shí)間(只讀)。此為自加載上一個(gè)關(guān)卡以來的時(shí)間(以秒為單位)。 |
| unscaledDeltaTime | 從上一幀到當(dāng)前幀的獨(dú)立于 timeScale 的時(shí)間間隔(以秒為單位)(只讀)。 |
| unscaledTime | 該幀的獨(dú)立于 timeScale 的時(shí)間(只讀)。此為自游戲啟動(dòng)以來的時(shí)間(以秒為單位)。 |
TimedeltaTime和realTimeSinceStartup的使用(006)
Time.deltaTime
時(shí)間間隔,一般用來控制一些動(dòng)畫效果;比如移動(dòng)物體可以:Vector3.forward*?Time.deltaTime?來控制3D物體的移動(dòng)。
Time.timeScale
控制時(shí)間的倍數(shù)。(控制Time和deltaTime)
Time.realTimeSinceStartup
計(jì)算游戲開始運(yùn)行到現(xiàn)在時(shí)間,可用于性能測(cè)試,比如:
float time1 = Time.realTimeSinceStartup; for(int i; i < 10000; i++) { method(); } float time2 = Time.realTimeSinceStartup; Debug.Log(time2 - time1);創(chuàng)建游戲物體的三種方法(007)
構(gòu)造方法
new
在Start函數(shù)中?new一個(gè)GameObjective。(空的游戲物體)比如:?GameObject?go =?new GameObject("Cube")
Instantiate
根據(jù)prefab進(jìn)行實(shí)例化(預(yù)設(shè)一個(gè)游戲物體)比如:?GameObject.Instantiate(prefab)
或者可以克隆其他物體。
CreatePrimitive
創(chuàng)建一些原始的圖形,比如:?GameObject.CreatePrimitive(PrimitiveType.Plane)
還可以是Capsule ,?Cube ,?Cylinder ,?Plane ,?Quad ,?Sphere。
如何給游戲物體通過代碼添加組件(008)
可以添加內(nèi)部組件,也可以添加自定義的腳本
GameObject?go =?new GameObject("Cube") go.AddComponent<Rigidbody>(); //添加剛體組件 go.RemoveComponent<Rigidbody>();//移除組件如何禁用和啟動(dòng)一個(gè)游戲物體(009)
tag 標(biāo)簽(區(qū)分不同的游戲物體);transform?物體的位置;
activeInHerit?是否處于激活狀態(tài);?activeSelf?物體是否被禁用(子物體在父物體下有關(guān))
GameObject go = new GameObject(); go.SetActive(false); //禁用物體 go.SetActive(true); //激活物體GameObject、Component和Object的千絲萬縷的關(guān)系(010)
UnityEngine下Object用有的靜態(tài)方法(011)
Unity中文手冊(cè)(UnityEngine下Object):
https://docs.unity.cn/cn/current/ScriptReference/Object.html
變量
| hideFlags | 該對(duì)象應(yīng)該隱藏、隨場(chǎng)景一起保存還是由用戶修改? |
| name | 對(duì)象的名稱。 |
公共函數(shù)
| GetInstanceID | 返回對(duì)象的實(shí)例 ID。 |
| ToString | 返回 GameObject 的名稱。 |
靜態(tài)函數(shù)
| Destroy | 刪除 GameObject、組件或資源。 |
| DestroyImmediate | 立即銷毀對(duì)象 /obj/。強(qiáng)烈建議您改用 Destroy。 |
| DontDestroyOnLoad | 在加載新的 Scene 時(shí),請(qǐng)勿銷毀 Object。 |
| FindObjectOfType | 返回第一個(gè)類型為 type 的已加載的激活對(duì)象。 |
| FindObjectsOfType | 返回所有類型為 type 的已加載的激活對(duì)象的列表。 |
| Instantiate | 克隆 original 對(duì)象并返回克隆對(duì)象。 |
運(yùn)算符
| bool | 該對(duì)象是否存在? |
| operator != | 比較兩個(gè)對(duì)象是否引用不同的對(duì)象。 |
| operator == | 比較兩個(gè)對(duì)象引用,判斷它們是否引用同一個(gè)對(duì)象。 |
?
GameObject獨(dú)有的靜態(tài)方法(012)
Unity中文手冊(cè)(UnityEngine下GameObject):
https://docs.unity.cn/cn/current/ScriptReference/GameObject.html
變量
| activeInHierarchy | 定義 GameObject 在 Scene 中是否處于活動(dòng)狀態(tài)。 |
| activeSelf | 此 GameObject 的本地活動(dòng)狀態(tài)。(只讀) |
| isStatic | 僅限 Editor 的 API,指定游戲?qū)ο笫欠駷殪o態(tài)。 |
| layer | 該游戲?qū)ο笏诘膶印?/td> |
| scene | 該 GameObject 所屬的場(chǎng)景。 |
| tag | 此游戲?qū)ο蟮臉?biāo)簽。 |
| transform | 附加到此 GameObject 的 Transform。 |
構(gòu)造函數(shù)
| GameObject | 創(chuàng)建一個(gè)名為 name 的新游戲?qū)ο蟆?/p> |
靜態(tài)函數(shù)
| CreatePrimitive | 創(chuàng)建一個(gè)具有原始網(wǎng)格渲染器和相應(yīng)碰撞體的游戲?qū)ο蟆?/td> |
| Find | 按 name 查找 GameObject,然后返回它。 |
| FindGameObjectsWithTag | 返回標(biāo)記為 tag 的活動(dòng) GameObject 的列表。如果未找到 GameObject,則返回空數(shù)組。 |
| FindWithTag | 返回一個(gè)標(biāo)記為 tag 的活動(dòng) GameObject。如果未找到 GameObject,則返回 null。 |
?
游戲物體間消息的發(fā)送和接收(013)
Unity中文手冊(cè)(UnityEngine下GameObject):
https://docs.unity.cn/cn/current/ScriptReference/GameObject.html
Message類
| BroadcastMessage | 調(diào)用此游戲?qū)ο蠡蚱淙魏巫禹?xiàng)中的每個(gè) MonoBehaviour 上名為 methodName 的方法。(廣播消息) |
| SendMessage | 調(diào)用此游戲?qū)ο笾械拿總€(gè) MonoBehaviour 上名為 methodName 的方法。 |
| SendMessageUpwards | 調(diào)用此游戲?qū)ο笾械拿總€(gè) MonoBehaviour 上或此行為的每個(gè)父級(jí)上名為 methodName 的方法。 |
得到組件的各種方法函數(shù)(014)
Unity中文手冊(cè)(UnityEngine下GameObject):
https://docs.unity.cn/cn/current/ScriptReference/GameObject.html
| AddComponent | 將名為 className 的組件類添加到該游戲?qū)ο蟆?/td> |
| CompareTag | 此游戲?qū)ο笫欠袷褂?tag 進(jìn)行了標(biāo)記? |
| GetComponent | 如果游戲?qū)ο蟾郊恿祟愋蜑?type 的組件,則將其返回,否則返回 null。 |
| GetComponentInChildren | 使用深度首次搜索返回 GameObject 或其任何子項(xiàng)中類型為 type 的組件。 |
| GetComponentInParent | 返回 GameObject 或其任何父項(xiàng)中類型為 type 的組件。 |
| GetComponents | 返回 GameObject 中類型為 type 的所有組件。 |
| GetComponentsInChildren | 返回 GameObject 或其任何子項(xiàng)中類型為 type 的所有組件。 |
| GetComponentsInParent | 返回 GameObject 或其任何父項(xiàng)中類型為 type 的所有組件。 |
| SetActive | 根據(jù)給定的值 true 或 /false/,激活/停用 GameObject。 |
總結(jié)
以上是生活随笔為你收集整理的SiKi学院 Unity中常用api学习笔记(001-014)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: react中使用photoswipe
- 下一篇: Paradigm 介绍 Goldfish