在這堂課中,你會學到如何繼承模型、建立模型以及編輯模型元件,建議可以先看過前一章。
模型可以從另一個模型繼承他的屬性,有相同的元件及屬性值。乍看之下可能跟複製很像,但仍有幾個關鍵不同之處。
- 複製:被複製與複製的模型各自獨立存在,修改其中一個模型設定不會互相影響
- 繼承:
- 被繼承與繼承模型互為父子關係
- 修改父模型設定也會套用到子模型
- 有修改限制,像是無法刪除從父模型繼承來的屬性
在Workspace裡,選好需要的模型後,點選他右鍵選單裡的Extend;通常從原生模型或是已建立的模型繼承。

你也可以從Scene中的實體繼承,對實體的右鍵選單裡點選Creat Extended Model From Entity。

繼承的模型會儲存在MyDesk,你可以看一下新繼承的子模型裡的元件及屬性,都會與父模型相同。

===================================
子模型的元件及屬性預設值皆來自其父模型。舉例來說,模型A包含元件A、元件B、元件C,A1模型為子模型,同樣也會包含元件A、元件B、元件C,其屬性設定初始值會與父模型A相同。

如果新增或刪除一個父模組的元件,同樣也會套用到繼承該模組的所有子模組,讓我們來看一個例子。
- 建立一個模組A,其中有A元件及B元件,並有一個繼承A的A1子模組
- 增加一個元件C到A模組裡,也會自動將元件C增加到A1模組
- 同樣地,刪除A模組的元件A,A1模組裡的元件A也會被刪除

但是子模組無法刪除從府父模組繼承來的元件。舉例來說,A1模組從A模組繼承下來的元件A、B、C無法在A1模組裡被刪除。如果你想刪除他們,你必須從模組A裡刪掉這些元件。

加入父模組的元件也會自動加入子模組,但與此不同的是,加入子模組的元件不會加到父模組裡。以剛剛例子來說,如果你把元件C加入A1模組,則A模組不會有元件C。你可以利用這種方式加入一些只有子模組獨有的元件,讓子模組多一點與父模組不同的特色。

你可以在屬性編輯器(Property Editor)裡的Model Extension Info,查看模組之間的關係。他立刻會列出所有父模組以及子模組的階層。

對他模組右鍵選單,點擊Find Model,就可以快速的在工作區(Workspace)找到。
你可以利用預設列表(Preset List)建立實體,而在預設列表裡的模型則會預設繼承自原生模型(NativeModel)。如果你想修改育樂列表裡模型的屬性,你得先修改原生模型。但如果你修改了原生模型,所有繼承該原生模型的子模型都會一併更動,相當白痴。
所以這時候就可以自己建立一個乾淨的模型,就不必做以上的蠢事。新建立的模型是自己一個獨立的原生模型,所以可以自由調整、修改。你可以根據以下方法來建立模型。
方法1:在工作區旁邊的+號→建立模型(Creat Model)
方法2:在工作區裡右鍵選單→建立模型

剛新建立的模組並未包含任何元件,所以用這個來建立實體沒啥屁用。根據你新模型的用途,你必須先放入一些基本的元件。讓我們根據你想實作的實體類型(遊戲用的實體、UI用的體)來放入一些元件吧!
| 遊戲 | UI |
|---|---|
|
|
你可以從工作區新增一個空模型後再加入元件,像是前面所述;你也可以從預覽畫面(Scene)上的實體轉為一個新的模組。這是一個相當方便的功能,因為建立的模型就已經含有修改好的元件、屬性,你就不必額外再調整。在預覽畫面中的實體右鍵選單,點選Create Model From Entity即可。

你可以從UI上的實體建立一個模型。舉例來說,我們想將NewUIGroup裡的Button01、Button02做成模型。

從UISprite裡點選Creat Model From Entity來建立模型,會建立在Workspace - MyDesk裡。

更多關於封裝的文件請點選此處參考用這種方式替UI建模,封裝進你的MSW套件,讓你可以把整個UI套用到另一個世界。
關於從UI實體建模有些限制:
- 不是所有UIGroup實體都可以被建模。
- 在Default Group裡原生地UICchat與UIJoystic無法被建模
- 有些模型裡的Extension Info有Break的"不可繼承"類的模型不能使用模型繼承功能
從模型或子模型建立實體,只需要從工作區裡將模型拖曳到預覽畫面中即可。

- 原生模型及預設列表
在模型的章節裡,實體是從模型建立的,而預設列表裡的只是另一種形式的模型,皆是繼承自原生模型,因此也繼承了他們的屬性及預設列表分類。所以你可以透過更改原生模型的在預設列表裡的分類,同樣也會改變子模型的分類。舉例來說,如果你想改變某個在預設列表 - 物件裡某個模型的屬性,你可以編輯原生模型 - MapObject裡的屬性。如果你想建立一個比實體大兩倍的物件模型,你只需要調整MapObject模型裡的Scale值為2即可。

- 模型實體
在模型或實體的屬性編輯器最上面顯示的是不屬於任何元件的屬性,是屬於模型屬性。模型屬性就像是書籤一樣,包含了屬於模型或實體裡元件的屬性模名屬性是元件屬性的投影,如果修改模型屬性,對應的屬性也會一併被修改。假設你修改了Scale值-Object-1實體的模型屬性之一-改為x=10, y=10, z=10,你會看到TransformComponent裡的Scale值也會一起更動。

創作可可以根據需要來調整模型屬性
1.選擇一個你要修改的模型,在模型屬性點選右上角的漢堡選單≡2.在菜單裡點選View Model Property切成模型屬性編輯模式

3.你可以將屬性右邊的勾選框打勾,將他指定為模型屬性

