PIXIJS性能优化之图集加载

Posted 1156184981651a

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了PIXIJS性能优化之图集加载相关的知识,希望对你有一定的参考价值。

技术图片

介绍

使用pixi去开发一个稍微复杂的项目的时候就会涉及到各种类型的图片加载成为纹理,之后GPU去渲染,但是在图片数量较多但尺寸较小时,分开去加载还是比较消耗性能的,因为浏览器的并行下载都是有限制的,下载图片的时候可能就会影响到首页的接口请求速度以及其他更重要的UI渲染速度,因此建议当首次加载有此类情况的时候最好去使用图集的方式来实现。

如何实现

纹理图集的实现分为雪碧图的制作导出、场景内加载两部分,接下来分开介绍:

  1. 雪碧图的制作导出:

    雪碧图的制作需要用到TexturePacker(免费版本就可以满足需求),接着就可以开始制作了。
    • 首先将需要用到的图片全部拖进软件中间可视区内,会自动生成雪碧图样式
    • 紧接着配置右侧属性区域,按下图配置即可
    • 最后点击’publish‘按钮就可以生成json文件和对应的雪碧图了


  2. pixi加载图集:

    pixi加载图集时使用的是pixi的loader来加载json文件,之后loader解析之后会再去下载同目录下的雪碧图,代码如下:
    // 初始化pixi场景
    const app = new PIXI.Application({
            width: window.innerWidth,
            height: window.innerHeight,
            antialias: true,    
            transparent: true,
        }),
        jsonFileName = ‘test.json‘,
        spriteName = ‘test.png‘;
    let resources = {},
        Loader = new PIXI.Loader();
    
    // pixi 内置的loader加载json文件    
    Loader.add(url)
        .load((loader, resources) => {
            Object.assign(resources, resources);
        });
    
    // 获取资源文件,‘title-1‘是图集内单个文件的名称   
    let propertySprite = new PIXI.Sprite(resources[jsonFileName].textures[‘title-1‘]);
    propertySprite.anchor.set(.5, .5);
    propertySprite.position.set(0, 0);
    app.stage.add(propertySprite);
    
    


总结

通过这样两步就可以实现pixi使用图集实现纹理渲染了,这样开发时只需要请求少量文件就可以获取到需要的纹理图片,降低了带宽占用、减少请求次数。

附:
pixijs: https://www.pixijs.com/
texturepacker: https://www.codeandweb.com/texturepacker

以上是关于PIXIJS性能优化之图集加载的主要内容,如果未能解决你的问题,请参考以下文章

cocos creator 性能优化之减少drawcall数量

UNITY性能优化丨『图集』在 Unity 2019.x版本前的使用方法,及提供『图集自动化工具』

优化之ui字体图集大小

UNITY性能优化丨『图集』在 Unity 2020.1版本后的使用方法,及提供『图集自动化工具』

UNITY性能优化丨『图集』在 Unity 2020.1版本后的使用方法,及提供『图集自动化工具』

web性能优化之---JavaScript中的无阻塞加载性能优化方案