手冊上關(guān)于層順序的介紹基本沒有,只是一個不明所以的Q&A一帶而過:
層的排序是否重要?
是的。層的優(yōu)先級是按順序從上到下的。層設(shè)置為?override?將始終覆蓋先前的層(如果層有遮罩,則基于其遮罩)。
基礎(chǔ)層的權(quán)重值是否應(yīng)始終設(shè)置為 1?或者在使用其他層時(shí)權(quán)重是否應(yīng)為 0?
基礎(chǔ)層權(quán)重始終為 1,覆蓋層將完全覆蓋基礎(chǔ)層。
(原文:)
Does the ordering of the layers matter?
Yes. Layers are evaluated from top to bottom in order. Layers set to?override?will always override the previous layers (based on their mask, if they have a mask).
Should the weight value of the base layer always be set to one or should the weight be zero when using another layer?
The base layer weight is always 1 and override layers will completely override the base layer.
如何理解“優(yōu)先級是按順序從上到下”?
以及 兩種混合模式 override 和 Additive 如何理解 ?
實(shí)踐出真知。
實(shí)驗(yàn)方法:
我有一個2D角色,默認(rèn)動畫是 “閑置狀態(tài)”(全身的動畫,包含手部),在默認(rèn)層 BaseLayer 。
它還有一個“開槍動作”(手部的特別動畫),放在新建的動畫層 arms 層。
為了明確不同混合方式達(dá)到的效果,
-
閑置狀態(tài) 的動畫中,我將身體變?yōu)樗{(lán)色
。
-
開槍動作?中,我將身體變成紅色
。
預(yù)期的結(jié)果是: 開槍時(shí),如實(shí)播放開槍動作,身體呈現(xiàn)紅色,則成功。如果是藍(lán)色,失敗。
實(shí)驗(yàn)結(jié)果記錄:?
層順序 | arms層的 混合模式 |
arms層的 權(quán)重 |
結(jié)果 |
上:Base Layer 下:arms |
override | 1 | 紅色(成功) |
override | 0.5 | 紫色 | |
additive | 1 | 藍(lán)色 | |
上:arms 下:Base Layer |
override | 1 | 藍(lán)色 |
additive | 1 | 藍(lán)色 |

?????????
??
結(jié)論分析
- 順序很重要:下方的層,會覆蓋上方的層。
- 現(xiàn)在回到一開始的問題:如何理解“優(yōu)先級是按順序從上到下”?我的理解是:先計(jì)算上方的層,后計(jì)算下方的層,后面的結(jié)果可以修改之前的結(jié)果。跟Sprite的Sort Order一樣去理解就可以了。
- override 模式: 覆蓋位于它上方的層。
- 例如,多個層都控制某一屬性,override層會覆蓋其上方的層的效果,覆蓋的程度取決于權(quán)重:
- 權(quán)重=1時(shí),可以完全覆蓋(所以結(jié)果呈紅色);權(quán)重=0時(shí),等于完全沒有效果,以此類推。所以在上面的實(shí)驗(yàn)中,權(quán)重=0.5時(shí),按比例混合其效果(0.5紅+0.5藍(lán) = 紫)。
- additive 模式:
- 將動畫“加”在之前的層上 (見下文)
- 所以一般的做法就是,將 “特別的” 動畫放在下面的層,選擇override,權(quán)重=1,就可以完美播放該層的動畫。
以上個人解讀,如有謬誤歡迎指正
Edit : 感謝評論區(qū)朋友的指正,重新看了下文檔,確實(shí)由于我實(shí)驗(yàn)方法的特殊性,造成了誤導(dǎo)性的結(jié)論(關(guān)于Additive的混合方式的解讀),已更正。
關(guān)于Additive
文檔說明:
- Select?Override?to use the animation on this layer, replacing the animation on previous layers.
- Select?Additive?to add the animation on this layer on top of the animation from previous layers.
For additive blending to be successful, the animation on the additive layer must contain the same properties as the previous layers.
我翻譯:文章來源:http://www.zghlxwxcb.cn/news/detail-442606.html
- 使用?Override?模式:用這一層的動畫替換掉之前層的動畫。
- 使用?Additive?模式:把這一層的動畫“加”在之前層的動畫上。為了成功混合,Additive層的動畫必須包含與之前層相同的屬性。
重新實(shí)驗(yàn)了一下,對于Additive層的“加”我是這樣理解的:文章來源地址http://www.zghlxwxcb.cn/news/detail-442606.html
- 有些屬性可以“加”,比如transform(位置,旋轉(zhuǎn)等)
- 例如,我在BaseLayer對物體的position做了【向左每秒移動1單位】的動畫,如果在Additive層對其做【向左每秒移動2單位】動畫,得到的結(jié)果是:該對象【向左每秒移動3單位】。
- 而顏色屬性似乎不能”加“,本以為可以簡單地得到”紅+藍(lán)=紫“這樣的結(jié)果,然而在Additive層,它并不能得到這個結(jié)果,反而override層將權(quán)重調(diào)到0.5時(shí), 得到了紫色的混合結(jié)果。
- (個人猜測:為什么顏色屬性不能Additive,可能涉及到疊加的算法?顏色疊加的模式太多了,沒有一個通用的定義,紅+藍(lán)=紫只是一個通俗的結(jié)論,但具體到把顏色作為RGBA的float4變量時(shí),加法并不等于“疊加”。疊加是乘法,得到的結(jié)果通常視覺上是變暗,而加法得到的結(jié)果是變亮。顏色不像transform可以簡單做加法。)
- 還有就是幀動畫,放在Additive層的sprite屬性會直接替換掉前面層的。(權(quán)重大于0.5時(shí))
到了這里,關(guān)于【unity實(shí)踐記錄】動畫層的順序和混合模式Override/Additive的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!