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