Unity元件

1405048499729402發表於2019-02-12

在學習C++的時候,對於面對物件有點了解。然後也使用過一段時間的Unity,用起來還是覺得,怎麼這麼好用。耦合性極低。當時不知道這是基於元件程式設計。所以現在來學習下基於元件的知識,並比較下基於元件和基於物件的區別。
一、面對物件
在學校,老師講授的C++,比較核心的就是“面對物件”的思想。好比編寫一個遊戲,先考慮好該遊戲有哪些物件,比如:玩家、敵人、道具、戰鬥關卡、等
  敵人和玩家都具有一些相同的屬性:血量、攻擊力、位置等。但是玩家除此之外還擁有金錢、裝備倉庫、技能。根據技能的不同,可以分為近戰的戰士 和 遠端攻擊的 法師。 玩家可以用 錢來購買裝備。裝備包含該裝備售賣的價格和裝備資訊。 遊戲關卡類控制戰鬥過程中關卡的切換。

二、元件程式設計
  在傳統的結構設計中一般會使用“派生”來描述物件之間的關係。子類通過派生父類,來獲得父類的功能。在設計遊戲物件時,會根據遊戲本身的需要而為遊戲物件新增各種功能支援,比如渲染,碰撞,剛體,粒子系統等等。這些通用功能為了能夠為各種派生類提供服務,都必須實現到基類中。這樣就導致了遊戲物件基類變得非常龐大臃腫,即難使用,又難維護。 ”基於元件“的物件模型就是把所有需要提供給遊戲物件的基礎功能都獨立成單獨的”元件模組“(Component),一個具體的遊戲物件可以將它需要的功能模組組合到一起使用。所有”功能“不再是父類中的介面,而變成子物件例項,為遊戲物件提供服務。這樣既保證了功能程式碼的可重用性,又增加了整個物件體系的模組化和靈活度。
  我的理解:Unity把最常使用、最基本的功能以一個個元件的形式提供給開發者。比如位置、音效、渲染、碰撞等。相當於開發者建造一個房子的話,Unity直接提供了磚頭、水泥、木頭、門窗這些基本的物件。開發者可以像搭積木一樣構造出一個個城堡。開發者充當的角色就是“膠水”,將一個個獨立模組通過一定的邏輯,粘連起來,最終達到自己的專案預期目的。

三、Unity有哪些元件
Unity3D = Gameobject + Components;Unity核心思想:一切皆元件;
Transform:物體的空間座標、縮放、旋轉資訊
燈光:點光源、方向光源、
相機
地形
粒子系統
螢幕特效
網格
物理引擎:重力、碰撞、剛體、射線
音效、視訊
動畫
AI:尋路
更多unity2018的功能介紹請到paws3d學習中心查詢。


相關文章