1. 程式人生 > >[Unity&C#]淺談介面interface 的意義

[Unity&C#]淺談介面interface 的意義


通常如果要 定義 一個 介面類 Interface 

public interface ITest

{

}

在Test前面加上 大寫 的 I ,表示 interface

作用1:不同物體 繼承 介面類 ,可以繼承 其介面類的成員

實現介面類 Interface 主要區別在於

介面類 Interface 可以 描述 兩個 不同種類 的物體 ,牆壁 和 汽車 都是 可以收到傷害的,並且是可以被摧毀 的。

這樣 形式 的 屬性 是可以 使用 介面類 來實現的。

作用2:使用介面類,對於 技能、物品、道具 等 的時候,消耗時間小

如果在繼承中 這種 傷害 屬性 ,摧毀屬性 ,都不是用 interface Test 而是用 class Test 繼承: MonoBehaviour

那麼 這個 class Test 就會執行 繼承 MonoBehaviour。


假設一個專案工程中,所有的 技能屬性,傷害屬性,摧毀屬性, 全都是 使用 繼承,那麼就會 使得 這些 所有 的 指令碼 都執行 一遍 繼承 MonoBehaviour。

如果 繼承一次 耗時 0.0001S, 小 的 專案 工程 不使用 介面 interface 是,看不出來 區別的。

但是 ,一旦 專案工程 十分 巨大 ,這種 時間的 損耗 就會十分巨大 。

就會造成 單擊遊戲 中 的 卡頓 。FPS 值下降。 類似 網路遊戲 的 高 PING 值。

玩家就會“卡了卡了”。

理解 介面 實際上 可以理解為 ,是 最簡化 的 類。而且這個類 比 繼承: MonoBehaviour的類 還要快。

作用3:查詢作用。通過 介面類 找到 某一物體 的(繼承了介面類)元件 的介面類 (裡面宣告)的變數 

有2個物體car 和 wall 繼承 同一個介面 Interface TI_Damage,那麼 另外一個 正常沒有繼承介面的 元件 Test_Interface 可以通過 介面TI_Damage 找到 這兩個

物體 car 的 TI_Car元件 和 wall 的 TI_Wall 元件,並 改變 兩者共同擁有 介面 Interface TI_Damage 的 變數 Name 和Health。