FaityGUI笔记:Loader (五)

FaityGUI笔记:Loader (五)装载器的用途是动态载入资源 点击主工具栏中的按钮 生成一个装载器 GLoader 装载器支持动态创建 动态创建装载器一定要设置装载器的大小 否则显示不出来 例如 GLoader aLoader new GLoader aLoader SetSize 100 100 aLoader url

大家好,我是讯享网,很高兴认识大家。

装载器的用途是动态载入资源。点击主工具栏中的
讯享网按钮,生成一个装载器。

  • GLoader

装载器支持动态创建,动态创建装载器一定要设置装载器的大小,否则显示不出来。例如:

GLoader aLoader = new GLoader(); aLoader.SetSize(100,100); aLoader.url = "ui://包名/图片名";

讯享网

GLoader可以载入图片、动画和组件。如果是UI包里的资源,那么通过“ui://包名/图片名”这种格式的地址就可以载入。但实际项目中,可能我们还需要载入和显示一些不在UI包里的,我们称之为“外部”的图片。默认的GLoader具有有限度的的加载外部资源的能力,它们是:

  • AS3 使用flash.display.Loader加载的外部资源。
  • Starling 使用flash.display.Loader加载的位图资源。加载后转化为Texture。
  • Egret 使用egret.RES.getResAsync加载的外部位图资源。
  • Layabox 使用Laya.loader.load加载的外部资源。
  • Unity 使用Resources.Load加载的外部贴图资源。
讯享网//AS3,加载一个网络图片 aLoader.url = “http://www.fairygui.com/logo.png”; //Egret,这里demoRes是resources.json里定义的一个资源 aLoader.url = “demoRes”; //Unity, 这里加载的是路径为Assets/Resources/demo/aimage的一个贴图 aLoader.url = “demo/aimage”;

如果这些默认的外部加载机制不能满足你的需求,例如,你希望从AssetBundle中获取资源,或者你需要加入缓存机制(这是有必要的,如果需要重复加载,建议做缓存),或者需要控制素材的生命期(这也是必要的,因为GLoader不会销毁外部载入的资源),那么你需要扩展GLoader。

  1. 首先编写你的Loader类,有两个重点方法需要重写:
class MyGLoader : GLoader { override protected function LoadExternal() { /* 开始外部载入,地址在url属性 载入完成后调用OnExternalLoadSuccess 载入失败调用OnExternalLoadFailed 注意:如果是外部载入,在载入结束后,调用OnExternalLoadSuccess或OnExternalLoadFailed前, 比较严谨的做法是先检查url属性是否已经和这个载入的内容不相符。 如果不相符,表示loader已经被修改了。 这种情况下应该放弃调用OnExternalLoadSuccess或OnExternalLoadFailed。 */ } override protected function FreeExternal(NTexture texture) { //释放外部载入的资源 } }

     2.注册我们要使用的Loader类。注册完成后,游戏中所有装载器都变成由MyGLoader实例化产生。

讯享网UIObjectFactory.SetLoaderExtension(typeof(MyGLoader));

在Unity平台中,如果在某些特殊场合需要将Texture2D对象赋予给GLoader,例如一个视频贴图,那么可以这样做:

//必须注意GLoader不管理外部对象的生命周期,不会主动销毁your_Texture2D aLoader.texture = new NTexture(your_Texture2D);

 

小讯
上一篇 2025-03-14 23:41
下一篇 2025-03-31 19:07

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/51991.html