cocos2dx 纹理缓存

本文详细介绍了缓存(cache)机制的工作原理,包括如何通过hashmap存储资源,以及自动和手动缓存纹理的方法。同时,还提供了如何获取和清理缓存的具体步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

缓存(cache)机制的原理是什么?

    把新加进内存的资源做一个hashmap存储,每一个资源加一个key。每次加载资源,先从缓存中寻找,如果找到就直接返回,否则加载到内存后再返回。

一、自动缓存纹理

直接使用display.newSprite(fileName)创建精灵,引擎内部会自动把纹理加载到缓存中

二、手动缓存纹理

(1)首先,需要获取引擎的纹理缓存实例

local textureCache = cc.Director:getInstance():getTextureCache()

(2)然后调用实例的addImage方法

local texture = textureCache:addImage(fileName)

注意:

    addImage是同步加载,如果图片很多,可能需要异步加载纹理(addImageAsync)

三、获取纹理

local texture = textureCache:getTextureForKey(fileName)

如果获取不到纹理的话,getTextureForKey会返回nil;

四、清理缓存(removeUnusedTextures、removeTextureForKey、removeAllTextures)

cc.Director:getInstance();getTextureCache():removeUnusedTextures()

removeUnusedTextures会释放当前所有引用计数为1的纹理(比如场景切换后,此方法可是释放前一场景加载的纹理资源);


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值