我通過嘗試做事情來學習 Unity,然后當 ofc 失敗時(因為這就是 XD 的生活),然后我會嘗試找到一些腳本來學習。
我試圖制作一個流暢的平臺游戲控制器,然后遇到了來自 Brackeys 的視頻
我無法理解這行代碼:
if (colliders[i].gameObject != gameObject)
{
m_Grounded = true;
if (!wasGrounded)
OnLandEvent.Invoke();
}
(完整的腳本可以在這里找到:https ://github.com/Brackeys/2D-Character-Controller/blob/master/CharacterController2D.cs )
正是第 54 行讓我遇到了問題。
if (colliders[i].gameObject != gameObject)
他在比較什么?第一個是附加到對撞機的游戲物件,但第二個是默認類,有人可以解釋他在這里要做什么嗎?
uj5u.com熱心網友回復:
請注意,它Monobehvaiour繼承自組件。所以它可以訪問它的所有屬性gameObject,transform..etc。檢查組件檔案
所以在片段中
if (colliders[i].gameObject != gameObject)
{
m_Grounded = true;
if (!wasGrounded)
OnLandEvent.Invoke();
}
您正在將特定陣列的物件 ( colliders[i].gameObject) 與代碼正在運行的當前單一行為 (gameObject或this.gameObject) 進行比較。在一個類中,您可以訪問它從 skypping 關鍵字繼承的所有public和成員,因為可以理解為您默認參考當前實體。protectedthis
希望這是有道理的。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/448011.html
標籤:unity3d
上一篇:如何在編輯器中更改影片fps
