日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

SiKi学院 Unity中常用api学习笔记(001-014)

發布時間:2024/3/24 编程问答 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。