RMMV的Sprite目前沒看到z之類能自由調優先度的屬性,這腳本就是實現這功能
因為寫腳本才會用到,所以這是給腳本作者用的腳本
注意裝上後要做好管理z軸的工作,還有只支援Sprite及他的子類(Window類和其他基本不支援)
至於為什麼不支援Window對象,因為這次Window對象預設是給 WindowLayer 去管
改了其中一個對象也沒用,改不到 WindowLayer;改WindowLayer又會統一變動
通常圖片也不會把視窗蓋掉,所以就算了
其他也不改,因為這些對象在預設狀態中都是排在Sprite對象後
所以非Sprite物件的優先度必定比較高
效果示範:
載點
v1.3
因為問題一大堆,addChild()時不再自動排序
v1.2
修正進戰鬥時的畫面問題,同時讓ScreenSprite和TilingSprite也有z屬性
v1.1
addChild()時能馬上反映優先度,並修正和非Sprite對象比較時無法正確排序的問題
其實早就做出來了,不過當時測試有點問題結果以為沒成功
因為 RMMV 的圖片優先度仰賴 Sprite 對象在 children 中的排序(越後面的顯示優先越高)
之前直接用 xxx.children[0].z = 1 來調整,可是這樣有個問題
假設原本的children是這樣:
改了之後就會變這樣:
結果就是明明看到輸入時返回值是對的,但再用xxx.children[0].z一看欸怎麼還是0
啊現在在0這個位子的是B,而不是原來的A啊
MV預設很多地方會直接把Sprite對象addChild()後不管,在這時候就不方便
要控制的話,最好再用個變數和目標Sprite關聯,最保險