已解决
cocos creator 资源管理
来自网友在路上 166866提问 提问时间:2023-10-30 12:59:52阅读次数: 66
最佳答案 问答题库668位专家为你答疑解惑
cocos creator 在使用过程中,经常需要动态加载远端资源,比日说 用户头像,龙骨动画皮肤资源,这些资源不可能都做成 预制体交给 cocos creator 帮助我们管理;
这个时候就需要我们 动态加载远端资源(但是 动态加载的资源,cocos creator是不会帮我们自动处理的,需要我们在不使用的时候 手动释放,减小内存控件的占用)
官方文档:Cocos Creator 资源管理
cocos creator 动态资源加载:
动态加载用户头像
public static webSprite(path: String) {return new Promise<SpriteFrame>((resolve) => {assetManager.loadRemote(`${path}`, (error, texture) => {if (!error) {let ImgAsset = texture as ImageAsset;let tex = new Texture2D();tex.image = ImgAsset;let sprite = new SpriteFrame();sprite.texture = tex;// this.spriteLeft.spriteFrame = sprite;// 添加计数器引用sprite.addRef();resolve(sprite);} else {console.log("网络图片加载出错:", error);resolve(null);}})}); }
cocos creator 动态资源卸载:
页面缓存动态图片的使用:
//记录页面动态加载的图集, 销毁时 释放用 private spriteCacheArray: Array<SpriteFrame>;
使用中途卸载资源:
这里的卸载主要是为了,比如说页面已经关闭了,头像才下载完毕 这个是要 需要现实的 Sprite 已经销毁了,这个时候 直接下载图片资源!
//clone 是 node 用于显示图片的 prefab Helper.webSprite(data['Users'][i]['Icon']).then(spriteFrame => {//正常显示逻辑if (this.spriteCacheArray && spriteFrame && clone) {this.spriteCacheArray.push(spriteFrame);clone.getChildByPath('icon_bg/Mask/default').getComponent(Sprite).spriteFrame = spriteFrame;} else {//页面已经销毁了 不存在要显示的 Sprite. 因为是异步操作 所有执行到这里的时候 节点有可能不在了if (spriteFrame) {spriteFrame.decRef();assetManager.releaseAsset(spriteFrame);}} });
使用完毕的卸载:
onDestroy() {if (this.spriteCacheArray) {this.spriteCacheArray.forEach(ele => {if (ele) {ele.decRef();assetManager.releaseAsset(ele);}});} }
查看全文
99%的人还看了
相似问题
- 【Vue3】解决Vue打包后上传服务器 资源路径加载错误
- 外部 prometheus监控k8s集群资源
- Unity下载资源且保存
- SpringBoot——静态资源及原理
- 【备忘录】Docker容器、镜像删除与资源清理命令
- 事关Django的静态资源目录设置(Django的setting.py中的三句静态资源(static)目录设置语句分别是什么作用?)
- unity unityWebRequest 通过http下载服务器资源
- 安装银河麒麟linux系统docker(docker-compose)环境,注意事项(一定能解决,有环境资源)
- 报错资源不足,k8s使用containerd运行容器修改挂载点根目录换成/home
- K8S篇之Pod中的资源限额
猜你感兴趣
版权申明
本文"cocos creator 资源管理":http://eshow365.cn/6-27813-0.html 内容来自互联网,请自行判断内容的正确性。如有侵权请联系我们,立即删除!