Unity的運作方式讓開發者可以在一個GameObject上面自由的掛Compoment~
這邊的Compoment是一個class繼承了MonoBehaviour!!!
(這邊不討論繼承Compoment和MonoBehaviour差異~)
用血條來說好了~
怪物和玩家物件多半都會有血量設定和顯示血條~
但是有血量並不一定會顯示血條!!比如隱形狀態玩家~~~~
所以可以預見的是血量和血調顯示會設計成分開的~~~
因為像BOSS等特殊怪可能會有特殊顯示方式!
那麼可以設計一個血條class~
只需要掛到角色上面就會顯示血條!!
這時候就可以將血條拆開變成一個Compoment~
要顯示在掛上去~要特殊血條只需要掛對應血條Compoment即可!!
就會形成一個特殊狀況!!如果這個GameObject是一個可破壞物件~
沒被打到不會顯示血條~~~
那就會變成一開始都沒血條~~~
等到被玩家攻擊後才加上血條Compoment顯示血條~
當然一些邏輯判斷也可以用GetComponent來檢查狀態~~~
這樣做很好用,但是不宜過度使用!!!
比如說Attacter這種屬性,掛上去代表有攻擊力~
然後可被攻擊物件掛上AttactAble的Compoment~
在加上比如PhysicDamageAble等Compoment~
會造成一次傷害需要呼叫15次以上的function~
我碰到的就是18次?呼叫function沒有效能消耗嗎???
打到一次敵人用各種Compoment檢查可不可以打人、可不可以被打等等~~~
這樣不會有效能問題嗎?
因為這個專案是測試專案,所以沒有到測試效能問題狀況~
但是這很可能碰到,希望大家不要沒事丟著就走了….