2012年3月7日 星期三

Unreal中ActionScript的讀檔路徑

ActionScript的讀檔路徑 

 

在Unreal中的swf執行其ActionScript時,當呼叫到如MovieClipLoader.loadClip()之類的讀檔函式,讀檔路徑會對應到該Swf的Unreal package路徑。

例如:在package P的group G中swf A呼叫MovieClipLoader.loadClip("B.swf")時,會去載入Unreal content中的"P.G.B"。

這代表這些在ActionScript中會互相載入的swf必須放在同一個package裡路徑才會正確。然而如果是使用一個swf集中載入其他swf的管理方法,這個限制可能會造成多個swf集中在一個package檔,造成版本控管不便。

修改GFx的讀檔路徑


不過其實只要修改GFx的讀檔路徑就可以讀到其他的package。例如當在package X中的A.swf裡的ActionScript要去讀取"B.swf"時,會呼叫在GFxUIEngine.cpp中的FGFxFileOpener::OpenFile()並傳入"/ package/X/B.gfx"。路徑會被轉成"X.B"然後呼叫LoadObject()載入該物件,所以只要把X改成其他package名稱就可以讀到別的package。

不過FontLib是個例外,它在UE中的路徑是在GFxUI.int(或其他語言副檔名)中的FontLib欄位指定的。所以它本來就可以放在一個單獨的package裡被其他swf共用。

沒有留言:

張貼留言