天天看點

Unity元件

在學習C++的時候,對于面對對象有點了解。然後也使用過一段時間的Unity,用起來還是覺得,怎麼這麼好用。耦合性極低。當時不知道這是基于元件程式設計。是以現在來學習下基于元件的知識,并比較下基于元件和基于對象的差別。

一、面對對象

在學校,老師講授的C++,比較核心的就是“面對對象”的思想。好比編寫一個遊戲,先考慮好該遊戲有哪些對象,比如:玩家、敵人、道具、戰鬥關卡、等

  敵人和玩家都具有一些相同的屬性:血量、攻擊力、位置等。但是玩家除此之外還擁有金錢、裝備倉庫、技能。根據技能的不同,可以分為近戰的戰士 和 遠端攻擊的 法師。 玩家可以用 錢來購買裝備。裝備包含該裝備售賣的價格和裝備資訊。 遊戲關卡類控制戰鬥過程中關卡的切換。

二、元件程式設計

  在傳統的結構設計中一般會使用“派生”來描述對象之間的關系。子類通過派生父類,來獲得父類的功能。在設計遊戲對象時,會根據遊戲本身的需要而為遊戲對象添加各種功能支援,比如渲染,碰撞,剛體,粒子系統等等。這些通用功能為了能夠為各種派生類提供服務,都必須實作到基類中。這樣就導緻了遊戲對象基類變得非常龐大臃腫,即難使用,又難維護。 ”基于元件“的對象模型就是把所有需要提供給遊戲對象的基礎功能都獨立成單獨的”元件子產品“(Component),一個具體的遊戲對象可以将它需要的功能子產品組合到一起使用。所有”功能“不再是父類中的接口,而變成子對象執行個體,為遊戲對象提供服務。這樣既保證了功能代碼的可重用性,又增加了整個對象體系的子產品化和靈活度。

  我的了解:Unity把最常使用、最基本的功能以一個個元件的形式提供給開發者。比如位置、音效、渲染、碰撞等。相當于開發者建造一個房子的話,Unity直接提供了磚頭、水泥、木頭、門窗這些基本的物件。開發者可以像搭積木一樣構造出一個個城堡。開發者充當的角色就是“膠水”,将一個個獨立子產品通過一定的邏輯,粘連起來,最終達到自己的項目預期目的。

三、Unity有哪些元件

Unity3D = Gameobject + Components;Unity核心思想:一切皆元件;

Transform:物體的空間坐标、縮放、旋轉資訊

燈光:點光源、方向光源、

相機

地形

粒子系統

螢幕特效

網格

實體引擎:重力、碰撞、剛體、射線

音效、視訊

動畫

AI:尋路

更多unity2018的功能介紹請到paws3d學習中心查找。

繼續閱讀