[ELFrameWork.AssetBundle框架]自定义加载流程和实现tolua断点功能

附有道云笔记排版文档:自定义tolua加载ab模拟机制,完美解决?..
链接:http://note.youdao.com/noteshare?id=c6da58f8245888d33013b7c2aef6bc6c

之前用的AB模拟加载机制,自定义写了一套加载流程,但是无法调试lua或者或者概率性能调试,因此写了一个新的加载流程框架完美解决了AssetBundle模拟调试(修改lua代码后不需要实时打Bundle就能立刻看到lua代码的修改效果)但是tolua不能debug的问题

原理:lua文件是通过路径来加载的,

  1. 设置好对应的加载路径(如:AddSearchPath)
  2. 设置好对应的加载方法(如:assetbundle)
  3. 设置好对应的加载方式(如:dofile(),dostring())

核心思路:

  1. 保证需要加载的文件全部加载完成
  2. 保证需要加载的文件启动入口准确

原框架逻辑梳理:

  1. tolua的打包机制是 提前addbundle预加载包,和后续的ab包,整合在平台的如Android.manifest
  2. tolua的预加载是通过AddBundle()到指定查询路径
#region 自定义操作行为
        /// <summary>
        /// 添加打入Lua代码的AssetBundle
        /// </summary>
        /// <param name="bundle"></param>
        public void AddBundle(string bundleName)
        {
   
            string url = ELUtil.DataPath + bundleName.ToLower();
            Debug.LogError(url);
            if (File.Exists(url))
            {
   
                var         bytes  = File.ReadAllBytes(url);
                AssetBundle bundle = AssetBundle.LoadFromMemory(bytes);
                if (bundle != null)
                {
   
                    bundleName = bundleName.Replace("lua/", "").Replace(".unity3d", "");
                    base.AddSearchBundle(bundleName.ToLower(), bundle);
                    Debug.LogError("true:" + bundleName);
                }
            }
        }

        #endregion
    /// <summary>
        /// 初始化LuaBundle
        /// </summary>
        void InitLuaBundle()
        {
   
            if (_luaLoader.beZip)
            {
   
                _luaLoader.AddBundle("lua_lua.unity3d");
                _luaLoader.AddBundle("lua_lua_math.unity3d");
                _luaLoader.AddBundle("lua_lua_debug.unity3d");
				...
            }
        }

tolua框架加载方法如果是开启zip走zip方法LuaInterface.LuaFileUtilsReadZipFile(string fileName) 否则走正常加载 File.ReadAllBytes(string fullPath);

  1. 注:zip方法就是相对路径加载方法,通过searchPath来加载
  2. 否则走全路径加载方法(绝对路径LoadFIle)
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
编译原理是计算机专业的一门核心课程,旨在介绍编译程序构造的一般原理和基本方法。编译原理不仅是计算机科学理论的重要组成部分,也是实现高效、可靠的计算机程序设计的关键。本文将对编译原理的基本概念、发展历程、主要内容和实际应用进行详细介绍编译原理是计算机专业的一门核心课程,旨在介绍编译程序构造的一般原理和基本方法。编译原理不仅是计算机科学理论的重要组成部分,也是实现高效、可靠的计算机程序设计的关键。本文将对编译原理的基本概念、发展历程、主要内容和实际应用进行详细介绍编译原理是计算机专业的一门核心课程,旨在介绍编译程序构造的一般原理和基本方法。编译原理不仅是计算机科学理论的重要组成部分,也是实现高效、可靠的计算机程序设计的关键。本文将对编译原理的基本概念、发展历程、主要内容和实际应用进行详细介绍编译原理是计算机专业的一门核心课程,旨在介绍编译程序构造的一般原理和基本方法。编译原理不仅是计算机科学理论的重要组成部分,也是实现高效、可靠的计算机程序设计的关键。本文将对编译原理的基本概念、发展历程、主要内容和实际应用进行详细介绍编译原理是计算机专业的一门核心课程,旨在介绍编译程序构造的一般原理和基本

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值