UG4L8-6——装载器
UG4L8-6——装载器
本章代码关键字
1 | GLoader //装载器类 |
装载器
为了节约性能提升效率,FairyGUI的图片是不能够动态修改资源的
而装载器的用途就是动态载入资源,我们可以使用装载器来动态的改变图片
装载器可以装载:图片、动画、组件
如何创建装载器
-
左侧选择装载器图标,在舞台上进行创建
-
选择想要变成装载器的元件右键,点击替换元件选择装载器
装载器相关属性
-
URL:资源路径(图片、动画、组件)
-
发布时清除:如果选中该选项,发布时会自动清空这里设置的值
-
自动大小:如果选中该选项,则装载器的尺寸会自动适配图片大小
选中该选项,则下面的填充处理选项没有意义 -
填充处理
- 无 :内容不会发生任何缩放。
- 等比缩放(显示全部):按照最小比率缩放,不变形,一边可能留空白。
- 等比缩放(无边框) :按照最大比率缩放,不变形,一边可能超出装载器矩形范围。
- 等比缩放(适应高度): 内容高度占满装载器高度,宽度等比缩放。
- 等比缩放(适应宽度) :内容宽度占满装载器宽度,高度等比缩放。
- 自由缩放: 内容缩放至占满装载器矩形范围,不保持比例。
- 注意:如果设置了自动大小,那么填充处理没有任何意义了
-
仅允许缩小:勾选后,处理填充处理时,其中的内容永远不被放大,但可以被缩小
-
帧:如果是动画,可以设置当前帧,如果是图片,没有任何意义
在Unity中使用
-
获取装载器
1
GLoader gLoader = view.GetChild("loader1").asLoader;
-
加载包中或者Resource的资源
1
2
3
4//加载包中的资源
gLoader.url = "ui://teach/ui_TY_biaotilan_01";
//通过内部帮助我们加载Resources加载资源
gLoader.url = "UI/bk"; -
动态创建装载器
1
2
3
4
5GLoader loader = new GLoader();
loader.SetSize(100, 100);
loader.y = 400;
loader.url = "ui://teach/MovieClip1";
view.AddChild(loader); -
获取装载器中的内容
如果是图片和动画,通过
gLoader.movieClip
获取,图片就是动画第一帧
如果是组件,通过gLoader.component
获取1
2MovieClip movie = gLoader.movieClip;
GComponent component = gLoader.component; -
装载Unity贴图
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18public Texture t;
void Start()
{
//设置适配相关
GRoot.inst.SetContentScaleFactor(1365, 768, UIContentScaler.ScreenMatc
//包与依赖包的加载
UIPackage package = UIPackage.AddPackage("UI/teach");
foreach (var item in package.dependencies)
{
UIPackage.AddPackage(item["name"]);
}
GComponent view = UIPackage.CreateObject("teach", "TeachPanel").asCom;
GRoot.inst.AddChild(view);
GLoader gLoader = view.GetChild("loader1").asLoader;
gLoader.texture = new NTexture(t);
} -
自定义加载方案
首先需要声明一个继承
GLoader
的派生类,在里面重写加载资源LoadExternal()
以及释放资源FreeExternal()
的方法1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20//自定义加载方案
public class MyGLoader : GLoader
{
//重写加载资源的方法
protected override void LoadExternal()
{
//自定义加载方式
Sprite s = null; //假设你自己写了一些加载的规则
NTexture texture = new NTexture(s); //假设这是加载成功的一张图
//如果加载成功,需要执行这个方法,并将加载成功的图片传进去
onExternalLoadSuccess(texture);
//如果加载失败,需要执行这个方法
onExternalLoadFailed();
}
protected override void FreeExternal(NTexture texture)
{
//释放外部载入资源的逻辑
}
}再注册该派生类,传入该派生类的类型,之后所有的装载器都将使用自定义的方法
1
UIObjectFactory.SetLoaderExtension(typeof(MyGLoader));
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 文KRIFE齐的博客!