之前我写游戏加载都是从一个json文件写入要加载的文件名来实现加载,但是如果资源

比较多的情况下,会导致非常难管理,需要逐个写入。所以换了另外一种方式来加载文件。

首先,我是通过场景之前的切换时候,加载下一个场景的资源,避免一次加载导致内存占

用过大,所以,我将各个场景中的资源分开单独的文件夹,如果两个或多个场景有共用的

资源可以再开多一个共用的文件夹,两个场景切换的时候都加载。然后一个场景中的文件夹

下再细分成不同类型资源的文件夹,比如spine动画文件夹,spriteframe文件夹,texture

文件夹等等,遍历各个类型文件夹的资源,通过不同加载方法加载。总结来说必须要分类好

资源,不然后续进行更新资源包会特别难管理。

lua遍历目录文件夹下的方法如下:

  local cmd = "ls "..cc.FileUtils:getInstance():getWritablePath().."res/spine"--存放spine动画的路径,ls是输出目录文件的命令

local s = io.popen(cmd)

local fileLists = s:read("*all")--读取该路径中的所有spine动画,返回一个字符串

local strTbl = lua_string_split(fileLists,"\n")--分割字符串

for k,v in ipairs(strTbl) do

local sprite = sp.SkeletonAnimation:create(string.format("spine/%s/%s.json",v,v),string.format("spine/%s/%s.atlas",v,v),0.2)

layer:addChild(sprite)

end

--分割字符串函数

function cc.exports.lua_string_split(str, split_char)

local sub_str_tab = {};

while (true) do

local pos = string.find(str, split_char);

if (not pos) then

break;

end

local sub_str = string.sub(str, 1, pos - 1);

local size_t = table.getn(sub_str_tab)

table.insert(sub_str_tab,size_t+1,sub_str);

local t = string.len(str);

str = string.sub(str, pos + 1, t);

end

return sub_str_tab;

end

转载请注明出处,from 博客园HemJohn

关于cocos2dx for lua资源加载优化方案的更多相关文章

  1. js资源加载优化

    互联网应用或者访问量大的应用,对js的加载优化是不可少的.下面记录几种优化方法 CDN  + 浏览器缓存 CDN(content delivery network)内容分发网络, 最传统的优化方式.其 ...

  2. cocos2d-x的lua脚本加载CocostudioUI两种方式

    前言 当前版本使用的是quick cocos2dx lua 3.3.UI使用cocostudio编辑器1.6.0.我们在程序里面可以使用两种方式进行解析UI.开始的时候用的是quick的方法, 结果遇 ...

  3. vue加载优化方案

    我们的项目随着组件的加入,首次加载的js文件越来越大,用户等待时间越来越长:之前想着使用webpack的splitCoding来解决,看了webpack的官方文档可以配置optimization的 m ...

  4. LinuxDLL加载优化方案

    作者:zhanhailiang 日期:2014-10-26 linux程序动态库载入流程简单介绍 linux从程序(program或对象)变成进程(process或进程),简单说来须要经过三步: fo ...

  5. vue-cli3.0 资源加载的优化方案

    20180829 更新 今天反复试了,不用区分 测试环境还是 生产环境,统一都用 cdn 就可以了 背景 之前自己搭建了一个 vue + tp5.1 的后台项目(https://segmentfaul ...

  6. cocos2dx lua 热加载实现

    [Q]原创 2015-08-30 在公司使用cocos2dx+lua 开发游戏有一段时间了,刚好lua的热更新交给我负责.以前热更新的lua脚本大部分都是在下载之后加载.最近策划又有新需求,需要在游戏 ...

  7. cocos2d-x Loading界面实现资源加载

    有时候场景中的资源加载过多的话就会引起游戏进入的时候很卡,因为那是边加载边显示.在tests例子里面有一个很好的例子叫做TextureCacheTest,里面讲解了如何写loading. #inclu ...

  8. Cocos Creator 资源加载流程剖析【一】——cc.loader与加载管线

    这系列文章会对Cocos Creator的资源加载和管理进行深入的剖析.主要包含以下内容: cc.loader与加载管线 Download部分 Load部分 额外流程(MD5 Pipe) 从编辑器到运 ...

  9. 再谈DOMContentLoaded与渲染阻塞—分析html页面事件与资源加载

    浏览器的多线程中,有的线程负责加载资源,有的线程负责执行脚本,有的线程负责渲染界面,有的线程负责轮询.监听用户事件. 这些线程,根据浏览器自身特点以及web标准等等,有的会被浏览器特意的阻塞.两个很明 ...

随机推荐

  1. 区块链:基于Hyperledger Fabric的 java 客户端开发(java sdk /java api server/java event server)

    fabric针对java 开发的部分支持不是很友好.基于目前较为稳定的fabric 1.4版本,我们封装了一个java sdk,apiserver,eventServer 封装java sdk的主要目 ...

  2. codevs1052 地鼠游戏

    1052 地鼠游戏 题目描述 Description 王钢是一名学习成绩优异的学生,在平时的学习中,他总能利用一切时间认真高效地学习,他不但学习刻苦,而且善于经常总结.完善自己的学习方法,所以他总能在 ...

  3. Apache为本地主机配置多个网站根目录详解

    Author:KillerLegend Date:2014.5.27 From:http://blog.csdn.net/killerlegend/article/details/27195445 - ...

  4. 特殊形状图片之遮罩蒙版CSS3-Mask效果

    前不久做了一个项目,需要一个小效果,就是获取用户头像以心形的形状展现在页面上,开始小五想的实现方式是canvas画图或CSS3的clip(剪切),发现都不理想,和设计稿里的图形美观度相差太大,而且实现 ...

  5. STP-7-RSTP的BPDU格式和处理方式的改变

    RSTP只使用一种BPDU,协议版本字段为2(STP为0). STP标志字段8位只使用了两位:TC(拓扑变化)和TCA(拓扑变化确认). RSTP也使用了其余6位:提议位,端口角色位,学习位,转发位, ...

  6. java.sql.SQLException: No suitable driver found for jdbc:hive://localhost:10000/default

    error: java.sql.SQLException: No suitable driver found for jdbc:hive://localhost:10000/default at ja ...

  7. openstack安装newton版本Glance部署(二)

    一.部署Glance 1.Glance 安装 [root@linux-node1 ~]#yum install openstack-glance python-glance python-glance ...

  8. SSIS控件使用

    1.转换控件: 2.执行SQL任务,返回一个值后,判断全量,还是增量?

  9. 时间日期相关:Date类、DateFormat类、Calendar类

    1 Date类 类 Date 表示特定的瞬间,精确到毫秒. 1秒=1000毫秒 毫秒的0点:公元1970年 一月一日,午夜0:00:00 对应的毫秒值就是0 时间和日期的计算,必须依赖毫秒值. Sys ...

  10. Android笔记--View绘制流程源码分析(二)

    Android笔记--View绘制流程源码分析二 通过上一篇View绘制流程源码分析一可以知晓整个绘制流程之前,在activity启动过程中: Window的建立(activit.attach生成), ...