【Unity笔记】FGUI打包成ab文件的加载方式

根据本地加载的方式,FGUI编辑器输出的图集文件一般会放在Unity项目的Resources目录下,然后根据不同的包名将该包所有图集(.png后缀,可能多个)打包成一个res_ab文件,描述文件(.byte后缀,单个)打包成desc_ab文件。这种方式的好处是可以将打包好的ab文件放到服务器用于下载使用,删除工程内的图集文件减少程序打包的大小(.ipa .apk)

以下是做的一个简单demo模拟FGUI外部加载ab文件的流程,仅供参考! (具体逻辑根据项目需求而定)

using UnityEngine;
using FairyGUI;
using System.Collections.Generic;
using System;
using Test;
/// <summary>
/// FairyGUI--ab数据加载方式(TODO:数据未存储到服务器)
/// </summary>
public class UIinitializeAB : MonoSingleton<UIinitializeAB>
{
#if UNITY_IOS
    private string abLocalPath = Application.streamingAssetsPath + "/UI/iOS/";
#elif UNITY_ANDROID
    private string abLocalPath = Application.streamingAssetsPath + "/UI/Android/";
#endif
    //储存所有包名
    private List<string> list = new List<string>()
    {
        "common","home","login"
    };
   //ab文件字典
    private Dictionary<string, AssetBundle> _dic = new Dictionary<string, AssetBundle>();
    private int num = 0;
    private Action callBack;

    public void Initialize(Action callBack)
    {
        this.callBack = callBack;
        foreach (string str in list)
        {
            string res_abName = str + "res_bundle";
            string desc_abName = str + "desc_bundle";
            LoadAB(res_abName);
            LoadAB(desc_abName);
        }
    }
    public void LoadAB(string abName)
    {
        AssetBundleMgr.Instance.LoadABAsset(abName, abLocalPath + abName,(abFile)=>
        {
            _dic.Add(abName,abFile);
            num ++;
            if (num == list.Count * 2)
            {
                Debug.Log("load commplete:" + num);
                TestBinder.BindAll();
                Application.targetFrameRate = 60;  //设置帧率
                UIObjectFactory.SetLoaderExtension(typeof(MyGLoader));  //外部图片加载
                foreach (string str in list)
                {
                    string res_abName = str + "res_bundle";
                    string desc_abName = str + "desc_bundle";
                    UIPackage.AddPackage(_dic[desc_abName], _dic[res_abName]);
                }
                callBack?.Invoke();//初始化完成回调
            }
        });
    }
}

这是我之前在某乎上写的文章,感觉对于用FGUI开发挺实用的,今天就搬来csdn了,希望对你有帮助!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值