首页 > 其他分享 >动态加载资源 释放时要注意 引入引用计数统计

动态加载资源 释放时要注意 引入引用计数统计

时间:2023-11-08 17:25:30浏览次数:36  
标签:时要 spriteFrame 计数 引用 动态 资源 加载

今天开发时,释放了预制体资源引起报错,这里直接使用了bundle.release

因为预制体的精灵图片是动态加载的,释放时将精灵图片一并释放了,引起错误

改为引用计数,解决问题

 

cocos资源释放文档:https://docs.cocos.com/creator/manual/zh/asset/release-manager.html

 

 

资源的动态引用

资源的动态引用
当开发者在编辑器中没有对资源做任何设置,而是通过代码动态加载资源并设置到场景的组件上,则资源的引用关系不会记录在序列化数据中,引擎无法统计到这部分的引用关系,这些引用关系就是动态引用。

如果开发者在项目中使用动态加载资源来进行动态引用,例如:

resources.load('images/background/spriteFrame', SpriteFrame, function (err, spriteFrame) {
    self.getComponent(Sprite).spriteFrame = spriteFrame;
});
此时会将 SpriteFrame 资源设置到 Sprite 组件上,引擎不会做特殊处理,SpriteFrame 的引用计数仍保持 0。如果动态加载出来的资源需要长期引用、持有,或者复用时,建议使用 addRef 接口手动增加引用计数。例如:

resources.load('images/background/spriteFrame', SpriteFrame, function (err, spriteFrame) {
    self.getComponent(Sprite).spriteFrame = spriteFrame;
    spriteFrame.addRef();
});
增加引用计数后,可以保证该资源不会被提前错误释放。而在不需要引用该资源以及相关组件,或者节点销毁时,请 务必记住 使用 decRef 移除引用计数,并将资源引用设为 null,例如:

this.spriteFrame.decRef();
this.spriteFrame = null;

 

标签:时要,spriteFrame,计数,引用,动态,资源,加载
From: https://www.cnblogs.com/kekit-rei/p/17817809.html

相关文章

  • 开启预加载 让IIS始终运行
    主要原理:保留应用程序池在特定时间回收的功能,让IIS能够始终运行,方便在上面托管定时任务在服务器管理器中安装应用程序初始化应用程序池高级设置 初始化请求接口在对应网站下右键高级设置  预加载已启用True如果只想让网站自动启动,那么预加载您的网站就足够了......
  • yarn : 无法加载文件 ***,因为在此系统上禁止运行脚本。
      关于这个问题,PowerShell脚本的执行有着严格的安全策略限制!只需要修改以下策略即可,“管理员身份启动”WindowsPowerShell修改执行策略,输入指令:set-ExecutionPolicyRemoteSigned,如下图:  再通过yarn执行打包构建项目工程就可以了!!!   翻译搜索复制......
  • 汇编-当前位置计数器$
    符号$被称为当前位置计数器.dataselfPtrDWORD$;声明了一个变量selfPtr,并将其初始化为该变量的偏移量       ......
  • vue中使用Loading这个加载工具
    在src/theme文件夹中建立loading.scss文件,内容如下:.loading-next{ width:100%; height:100%;}.loading-next.loading-next-box{ position:absolute; top:50%; left:50%; transform:translate(-50%,-50%);}.loading-next.loading-next-box-warp{ width:80px......
  • 看我一行代码起飞,Glide加载gif优化实践
    前言最近项目中有使用到gif动画,加上本身已经引入了Glide(支持gif)库,所以便用Glide来加载了;但在使用过程中还是遇到了不少困难,在此记录下,希望可以给遇到类似问题的你一些思考和建议。一、Glide加载gif1.在项目中添加依赖dependencies{compile'com.github.bumptech.glide:glide:4......
  • moviepy音视频剪辑-音视频的加载和输出
    一、概述在本地进行音视频处理时,首先要从视频文件进行音视频加载,最后要将处理结果输出到文件。本节介绍moviepy的音视频的加载和输出方法。二、视频加载2.1、视频加载方法要从视频文件中加载视频非常简单,使用VideoFileClip类的构造方法即可完成加载。其构造方法语法如下:__init__......
  • selenium等待元素加载,元素操作,执行js,切换选项卡,前进后退,异常处理,登录cnblogs,抽
    1selenium等待元素加载......
  • JS脚本实现刷新页面,随机加载背景图片
    新建switch.js,内容如下: varimgs=[ "https://mlabs.gitee.io/pics/webp/tiankong002-mid.webp", "https://mlabs.gitee.io/pics/webp/wallhaven-gp1q87.webp", "https://mlabs.gitee.io/pics/webp/shanshui007sm......
  • ASP.NET性能计数器
       ASP.NET支持两组性能计数器:系统和应用程序。前者在ASP.NET性能计数器对象中的PerfMon中公开;后者在ASP.NETApplications性能对象中公开。ASP.NET性能对象中的StateServerSessions计数器(仅适用于在其中运行状态服务器的服务器计算机)和ASP.NETApplications性能......
  • 如何选择 Web 服务器性能计数器
    有数百个您可以从中选择要监视服务器活动的计数器。下面的列表描述了可用于监视您的Web服务器上负载,并为每个提供理想的值的计数器。收起该表格展开该表格对象或计数器理想的值内存每秒页0到20(如果通过80,表示问题)内存可用的字节数至少4兆字节(MB)内存提交的字节数不会......