UIPackage.AddPackage自定义加载问题

 byte[] desc = LoadByteByIO(packName + ".fui.bytes");
FairyGUI.UIPackage.AddPackage(desc, string.Empty, (string name, string extension, System.Type type) =>
{
if (extension == ".bytes")
{
return new TextAsset(Encoding.UTF8.GetString(LoadByteByIO(name + extension)));
}
else if (extension == ".png")
{
return LoadTexture2DByIO(packName + "_" + name + extension);
}

return null;
});
//在NTexture的Unload方法卸载的时候
//destroyMethod=DestroyMethod.Unload
//会走Resources.UnloadAsset(_nativeTexture);
//但是由于这个不是由AssetDatabase或者Resources加载的,所以会报错
UnloadAsset can only be used on assets;
UnityEngine.Resources:UnloadAsset(Object)
FairyGUI.NTexture:Unload(Boolean) (at Assets/Game/Scripts/FairyGUI/Core/NTexture.cs:278)
FairyGUI.NTexture:Unload() (at Assets/Game/Scripts/FairyGUI/Core/NTexture.cs:252)
FairyGUI.UIPackage:Dispose() (at Assets/Game/Scripts/FairyGUI/UI/UIPackage.cs:827)
FairyGUI.UIPackage:RemovePackage(String) (at Assets/Game/Scripts/FairyGUI/UI/UIPackage.cs:298)
FairyGUI_UIPackageWrap:RemovePackage(IntPtr) (at Assets/Source/Generate/FairyGUI_UIPackageWrap.cs:175)
 
 
这个用法主要是想用WindowsPlayer来方便测试开发(不用打AssetBundle), 谷主可以适配一下吗
已邀请:

谷主

赞同来自: lanr

我改了一下,loadFunc加了一个out参数DestroyMethod,可以在回调里设置这个DestroyMethod。

谷主

赞同来自:

为什么连Assets目录都不放?

lanr

赞同来自:

是在WindowsPlayer平台运行,放在Assets也没办法使用吧?
使用这种模式是让WindowsPlayer平台可以直接加载.bytes和.png文件, 而不用打包成assetBundle或者重新导出资源

谷主

赞同来自:

那这种资源应该怎样卸载的?

lanr

赞同来自:

xxproj\
  Assets\
    Resources\
       ui\
 
xxproj_win\
   xxproj_win.exe
 
直接在xxproj_win.exe加载xxproj/Assets/Resources/ui的资源
用Object.DestroyImmediate?

lanr

赞同来自:

我现在是改了源码, 用Object.DestroyImmediate

要回复问题请先登录注册