首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

记一次Unity3D中WWW加载本地图片很慢的BUG

记一次Unity3D中WWW加载本地图片很慢的BUG 2017-05-11 by Liuqingwen | Tags: Unity3D | Hits 事情是这样的,昨天有朋友在群里询问一个...Unity3D 本地图片资源加载相关的问题:“切换图片的时候,要等3,4秒才能显示切换的图片”,今天上线后看到了,然后自己也做了测试,发现并没有重现这个问题,如是两个人讨论了一番。...即使是加载远程服务器的大图估计也花不了这么长的时间,因为没有做过 Unity3D 的开发,我的第一反应就是去官网找了 WWW 的相关用法: You can inspect the isDone property...www.isDone) 改图片路径的字符串 file:// 成 file:/// 很显然,结果是无用功,以上只是逻辑问题,不可能会引起长达 3 秒的加载时间。...sort=votes WWW Script Reference: https://docs.unity3d.com/ScriptReference/WWW.html

4.2K60

AssetBundle使用模式

在加载AssetBundles中有提到,WWW对象在下载AssetBundle时,将消耗等同于AssetBundle数据大小的内存。这会导致不可接受的内存峰值。...更多的细节请看章节定制下载器。 一般来说,建议刚开始时还是尽可能地使用UnityWebRequest,或者Unity5.2版本及之前的WWW.LoadFromCacheOrDownload。...定制downloaders必须防止过度的内存分配,过量的线程使用以及唤醒。Unity的WWW类就是一个反例,就像这里描述的一样。...因为WWW会消耗太多的内存,如果应用不需要使用WWW.LoadFromCacheOrDownload,那就该禁止使用Unity的WWW类。...Unity没有为差别化补丁提供任何内置的机制。并且在使用内置缓存系统时,不论使用WWW.LoadFromCacheOrDownload还是UnityWebRequest都不会进行差别化补丁。

2.2K20
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    AssetBundle详解

    一:AssetBundle介绍 AssetBundle是将资源使用Unity提供的一种用于存储资源的压缩格式打包后的集合,它可以存储任何一种Unity可以识别的资源,如模型,纹理图,音频,场景等资源。...(4)加载,通过Unity提供的API可以加载资源里面包含的模型、纹理图、音频、动画、场景等来更新游戏客户端。 (5)卸载AssetBundle,卸载之后可以节省内存资源,并且要保证资源的正常更新。...WWW.texture,WWW.bytes,WWW.audioClip等接口直接加载外部资源,而后者只能用于加载AssetBundle; 前者的劣势 ● 每次加载都涉及到解压操作,而后者在第二次加载时就省去了解压的开销...在加载过程中,unity会将AssetBundle中的数据流转变成unity可识别的信息类型,如:材质、纹理等。加载完成之后,我们就可以对其进行更多操作了,如:对象的实例化、材质复用、纹理替换等等。...对于WWW对象,可以使用www=null或www.dispose来卸载。这两者是有区别的,www=null不会立即释放内存,而是系统的自动回收机制启动时回收。

    1.9K10

    Unity性能调优手册7:渲染优化,DrawCall,剔除,Shader,LOD,TextureStreaming

    Sprite比只加载一个Sprite消耗更多的内存,因为整个图集的纹理都是加载的。...这可以通过在Unity中实现一个专门的纹理生成工具或作为各种DCC工具的扩展来完成。如果一个已经在使用的纹理的alpha通道没有被使用,最好是写入它或准备一个专用的纹理。...Texture Streaming Unity的纹理流可以用来减少纹理所需的内存占用和加载时间。纹理流是一种通过基于场景中的摄像机位置加载mipmaps来节省GPU内存的功能。...同样,在在Quality Settings质量设置下的Memory Budget 内存预算限制加载纹理的总内存使用。纹理流系统将加载mipmaps,而不会超过这里设置的内存量。...译者增加部分 在Unity中,纹理串流技术叫做The Mipmap Streaming System,其作用是让Unity根据摄像机的位置只加载对应Mipmap Level的纹理到显存中,而不是把所有

    2.6K64

    Unity3D学习笔记9——加载纹理

    概述 理论上,Unity中加载纹理并没有什么难度,只需要将图片放置在Assets文件夹内,就会被识别成纹理,从而可以加载到场景中。但是一旦有一些额外的需求的时候,就得使用其他的方式进行纹理加载。...Resources方式 使用Resources机制来加载Unity的各种资源,包括纹理: Texture2D texture = Resources.Load("ImageDemo...这种情况我们应该了解一下纹理的使用原理:纹理图片首先是存在硬盘空间中,然后通过CPU读取到内存,最后数据交换到GPU的显存中。...对此Unity提供了WWW类作为访问的接口,但是已经废弃。...不过实际使用中我并没有使用这套接口。因为我想把一部分工作放到多线程中。我们知道Unity与渲染或者资源相关的内容是不能放置到多线程的,但是访问远端数据、并且读取到内存这部分内容是可以放置到多线程的。

    1.3K10

    【Unity游戏开发】AssetBundle杂记--AssetBundle的二三事

    加载AssetBundle使用AssetBundle.LoadFromFile(Async),在Unity4的时候,只能使用WWW的接口来加载AB,因为CreateFromFile不支持压缩的AB。...所以没有太大必要使用WWW了,而且这个接口像WWW.LoadFromCacheOrDownload接口一样,加载不压缩或者LZ4压缩格式的AB的时候是不会有额外的内存开销的。...,这个测试使用了一个纹理,一个材质,一个正方体Prefab,还有两个正方体组成的Prefab,材质使用了纹理,而两组正方体都使用了这个材质,上面的代码用Push开启了依赖,打包纹理,然后打包材质(材质自动依赖了纹理...C,B,而A不需要动,打包C的原因是,因为B依赖于C,如果不打包C,直接打包B,那么C的资源就会被重复打包,而且B和C的依赖关系也会断掉 【四,内存】     在使用WWW加载Bundle时,会开辟一块内存...对象,本身并不会占用过多的内存(只是一些索引信息,每个资源对应的磁盘路径,在Load时从磁盘取出),针对手机上内存较小的情况,使用WWW.LoadFromCacheOrDownload代替new WWW

    3.4K31

    【Unity3D插件】AVPro Video插件分享《视频播放插件》

    :在使用Unity 5.3或更低版本或Unity 5.4或更高版本时,在不启用单通道VR选项的情况下,一定要在场景中添加“UpdateStereoMaterial”组件脚本。...) 在视频不播放时显示的纹理 5.4 脚本 5.4.1 命名空间 所有脚本都使用名称空间RenderHeads.Media。...DisplavlMGUl.cs 显示MediaPlayer组件使用Unity的遗留IMGUl系统生成的纹理DisplayuGul.cs显示MediaPlaver组件使用Unity的新uGUI svstem...int GetTextureFrameCount (); 返回插件更新纹理的次数。这对于了解每次更新纹理时的值wil增量是很有用的。...bool RequiresVerticalFlip () 有些纹理是上下颠倒解码的,需要在显示时垂直翻转。此方法返回显示期间是否需要翻转纹理。

    5.9K20

    【Unity3D插件】AVPro Video插件分享《视频播放插件》

    在使用Unity 5.3或更低版本或Unity 5.4或更高版本时,在不启用单通道VR选项的情况下,一定要在场景中添加“UpdateStereoMaterial”组件脚本。...(optional) 在视频不播放时显示的纹理 5.4 脚本 5.4.1 命名空间 所有脚本都使用名称空间RenderHeads.Media。...DisplavlMGUl.cs 显示MediaPlayer组件使用Unity的遗留IMGUl系统生成的纹理DisplayuGul.cs显示MediaPlaver组件使用Unity的新uGUI svstem...int GetTextureFrameCount (); 返回插件更新纹理的次数。这对于了解每次更新纹理时的值wil增量是很有用的。...bool RequiresVerticalFlip () 有些纹理是上下颠倒解码的,需要在显示时垂直翻转。此方法返回显示期间是否需要翻转纹理。

    4.5K20

    客户端Unity性能分析

    目前大多数游戏使用的都是Unity引擎,所以对游戏Unity性能分析就显得十分重要,而Unity性能主要针对影响内存、CPU和GPU的不同参数进行分析。...Mono内存峰值: 绝大部分Unity游戏逻辑代码所使用的语言为C#,C#代码所占用的内存称为Mono内存, Unity是通过Mono来跨平台解析并运行C#代码的,C#代码通过mono解析执行,所需要的内存也是由...对于Mono内存峰值偏高可能存在某一帧加载大量资源,可以优化GC函数减少自动扩展Mono内存池并避免同一时刻大量Mono内存分配操作。...Mono内存峰值偏高也可能是内存泄漏导致的,这可以使用内存快照对比找出泄露的具体情况。 Textsure纹理峰值: 纹理是最基本的数据输入单位,是Unity最基础的图片形式,纯粹的图片。...其中纹理格式、尺寸都决定着纹理加载的效率。 对于纹理资源占用偏大的情况,可以降低纹理分辨率,针对Android使用ETC格式,iOS使用PVRTC格式。用于UI的纹理要禁用mipmaps。

    5.3K63

    如何用Unity导出H5与小游戏的3D场景

    当要使用VIP(增值)功能时,需要从LayaAir3D菜单项的Account登录帐号,购买或使用VIP功能。...在使用时,要判断不同系统平台来分别加载对应的纹理压缩资源文件。如果勾选了这两个选项,默认的Conventional选项可以不用勾选。...五、模型的导出文件与加载显示 当了解完插件的功能和使用规则后,我们就可以在Unity中进行编辑并导出了,但是导出后的文件名分别代表着什么,又是怎么进行加载使用的。本小节开始为大家介绍。....pvr 采用PVR格式进行纹理压缩图片文件(在iOS平台下使用)。 5.2 加载显示 导出的Unity资源,在不考虑其它逻辑的情况下,要通过LayaAir引擎显示出来,就需要先加载资源再显示了。...; })); 纹理Texture加载 单个纹理加载使用Texture2D.load()方法,示例代码如下: //加载纹理,省略若干代码,仅为加载示例 Laya.Texture2D.load("xx/xx.png

    10.6K8984

    Unity中使用AssetBundle来加载资源的过程,提高资源加载效率和减少运行时内存占用

    在Unity中,使用AssetBundle来加载资源可以提高资源加载效率和减少内存占用。...下面是使用AssetBundle加载资源的过程,以及如何在项目中合理使用AssetBundle来提高效率和减少内存占用的方法:使用AssetBundle加载资源的过程:创建AssetBundle:首先需要将需要加载的资源打包成...可以使用Unity的BuildPipeline.BuildAssetBundles方法来将资源打包成AssetBundle文件。...Unity提供了两种加载AssetBundle的方式,一种是通过UnityWebRequest来加载,另一种是使用AssetBundle.LoadFromFile方法加载。...例如,对纹理进行压缩、合并和裁剪等操作,减少内存占用。

    1.1K61

    3D场景编辑导出-LayaAir引擎Unity插件使用详解

    当要使用VIP(增值)功能时,需要从LayaAir3D菜单项的Account登录帐号,购买或使用VIP功能。...在使用时,要判断不同系统平台来分别加载对应的纹理压缩资源文件。如果勾选了这两个选项,默认的Conventional选项可以不用勾选。...五、模型的导出文件与加载显示 当了解完插件的功能和使用规则后,我们就可以在Unity中进行编辑并导出了,但是导出后的文件名分别代表着什么,又是怎么进行加载使用的。本小节开始为大家介绍。...所以,需要导出场景相关的设置时,必须要使用Scene3D类别导出,就可以看到 .ls 后缀的文件。...Texture加载 单个纹理加载使用Texture2D.load()方法,示例代码如下: //加载纹理,省略若干代码,仅为加载示例 Laya.Texture2D.load("xx/xx.png",Laya.Handler.create

    4.7K41

    优化Unity UI,告别卡顿只需这几招!

    压缩纹理:使用Unity内置的纹理压缩(Texture Compression,将图片资源进行压缩以减少内存占用和加载时间。...Unity支持多种纹理压缩格式,如DXT、PVRTC等)工具,可以显著减少纹理占用的内存。合理的图片尺寸:确保使用的图片尺寸与显示尺寸相匹配,避免使用过大的图片。...3.2 优化字体资源字体的渲染也会占用大量内存,特别是在使用动态字体时。使用静态字体:尽量使用静态字体替代动态字体,静态字体只加载所需的字符集。字体缓存:通过缓存字体纹理,减少字体的重建开销。...元素,可以采用延迟初始化的策略,在需要时再进行加载和初始化。...内存占用过高:优化图片和字体资源,考虑异步加载。写在最后优化Unity的UI性能和内存使用是一个复杂但非常重要的任务。

    1.1K10

    Unity实现高性能多实例RTSP|RTMP播放器技术实践

    除了硬件解码外,还通过合理管理播放器的资源,如及时释放不再使用的纹理对象、优化内存分配等,进一步提高了播放器的性能和稳定性。...每个播放实例都会创建一个独立的纹理对象用于视频的渲染。为了优化内存使用,需要在播放实例销毁时及时释放对应的纹理对象。...同时,还可以通过内存池技术,对频繁使用的内存对象进行复用,进一步提高内存分配的效率。例如,可以创建一个纹理对象池,当需要创建新的纹理对象时,从池中获取一个空闲对象,而不是每次都创建一个新的对象。...1 : 0, 0); 优先使用GPU解码,降低CPU负载,提升4K视频解码性能。 2. YUV420纹理处理视频流通常采用YUV420格式,需转换为Unity支持的RGB材质。...纹理更新: 仅在分辨率变化时重新初始化纹理,减少GPU开销。 使用LoadRawTextureData直接操作纹理内存,避免中间转换。

    6000

    移动平台 Unity3D 应用性能优化(下)

    视锥体剔除只是不渲染摄像机视角范围外的物体而对于被其他物体遮挡但依然在视角范围内的物体,则不会被剔除. 注意当你使用遮挡剔除时,视锥体剔除(Frustum Culling)依然有效。...所以当你需要光照效果时,可以使用Lightmaps,提前烘焙好,提前把场景中的光照信息存储在一张光照纹理中,然后在运行时刻只需要根据纹理采样得到光照信息即可。...二、Unity3D应用性能优化之内存 unity中有两类内存,一个是Mono托管的内存(相当于DVM的内存),一个是Unity3D使用的资源类类型的内存(Texture、Mesh这种)。...Unity3D类的内存 这类内存包括 1、AssetBundle Unity3D 里有两种动态加载机制:一个是Resources.Load,另外一个通过AssetBundle,其实两者区别不大。...3D模型的纹理一般是需要mimap的,但是如果确定了3D模型距离摄像机的距离,在GPU分析器上确定了unity使用的纹理,就可以保留,关闭mimap(比如项目中的avatar)。

    2.2K10

    UPA深度性能报告解读

    上图中的total_reserved是unity引擎在内存方面的总体分配量,total_used是unity引擎在内存方面的总体使用量,unused_total是空闲的内存。...资源重复是指内存中同一时刻,存在两份或以上相同的纹理、网格、动画、音频等资源。一般是相同的一份资源被打包到多个AB包中,如果这些AB都被加载进内存,内存中就会存在多份相同的资源。...纹理资源超标,一般优化的方向: 1)纹理用于UI,禁用mipmaps; 2)尽可能降低纹理分辨率,不要超过2048*2048; 3)android尽量使用ETC格式,ios使用PVRTC格式; 4)低配机目前一般不支持...openGL3.0,故使用ETC2时会自动转换成RGBA32,纹理占用大概是中高配机的4倍。...左边是抓取到的当前帧的所有绘制指令,鼠标在listview中从上到下点击,可以还原当前帧的绘制过程。 ? 这个是纹理浏览器,是捕获帧加载进来的纹理资源。

    91020

    Unity中几种优化Sprite动画性能的方法,以及它们的具体实现方式

    在Unity中,可以使用以下几种方法来优化Sprite动画的性能:使用合适的Sprite图片格式:Unity支持多种图片格式,例如PNG、JPG、TIFF等。...在使用Sprite动画时,可以尝试使用压缩率高、加载速度快的图片格式,以减少图片的内存消耗和加载时间。...使用Sprite Atlas(雪碧图集):Sprite Atlas是将多个Sprite打包在一起的技术,可以减少Sprite的批次数和纹理切换次数,从而提高动画的性能。...在Unity中,可以使用Sprite Atlas的功能来自动合并并优化Sprite纹理。合理设置Sprite的压缩格式:在Unity的Sprite导入设置中,可以设置Sprite的压缩格式。...可以尝试减少动画的帧数,或者使用更精简的动画效果来减小性能的开销。使用GPU实现动画:Unity提供了基于GPU的动画实现方式,可以在动画播放时利用GPU的并行计算能力来加速动画演算。

    1.6K61

    学习Unity必看的几本书推荐

    《Unity+Shader入门精 图片来源:www.sangpi.com 本书不仅要教会读者如何使用Unity Shader,更重要的是要帮助读者学习Unity中的一些渲染机制以及如何使用Unity...的实现原理和基本语法; 第4章学习Shader所需的数学知识,帮助读者克服学习Unity Shader时遇到的数学障碍; 第5章通过实现一个简单的顶点/片元着色器案例,讲解常用的辅助技巧等; 第6章学习如何在...Shader中实现基本的光照模型; 第7章讲述了如何在Unity Shader中使用法线纹理、遮罩纹理等基础纹理; 第8章学习如何实现透明度测试和透明度混合等透明效果; 第9章讲解复杂的光照实现; 第10...章讲解在Unity Shader中使用立方体纹理、渲染纹理和程序纹理等高 级纹理; 第11章学习用Shader实现纹理动画、顶点动画等动态效果; 第12章讲解了屏幕后处理效果的屏幕特效; 第13章使用深度纹理和法线纹理实现更多屏幕特效...; 第19章讲解在升级Unity 5时可能出现的问题,并给出解决方法; 第20章介绍许多非常有价值的学习资料,以帮助读者进行更深入的学习。

    11.8K32

    学习Unity必看的几本书推荐

    《Unity+Shader入门精 书7.png 图片来源:www.cungun.com 本书不仅要教会读者如何使用Unity Shader,更重要的是要帮助读者学习Unity中的一些渲染机制以及如何使用...的实现原理和基本语法; 第4章学习Shader所需的数学知识,帮助读者克服学习Unity Shader时遇到的数学障碍; 第5章通过实现一个简单的顶点/片元着色器案例,讲解常用的辅助技巧等; 第6章学习如何在...Shader中实现基本的光照模型; 第7章讲述了如何在Unity Shader中使用法线纹理、遮罩纹理等基础纹理; 第8章学习如何实现透明度测试和透明度混合等透明效果; 第9章讲解复杂的光照实现; 第10...章讲解在Unity Shader中使用立方体纹理、渲染纹理和程序纹理等高 级纹理; 第11章学习用Shader实现纹理动画、顶点动画等动态效果; 第12章讲解了屏幕后处理效果的屏幕特效; 第13章使用深度纹理和法线纹理实现更多屏幕特效...; 第19章讲解在升级Unity 5时可能出现的问题,并给出解决方法; 第20章介绍许多非常有价值的学习资料,以帮助读者进行更深入的学习。

    8.4K40

    Unity性能调优手册4:资源优化,Texture,Mesh,Material,Animation,ParticleSystem,Audio,ScriptableObject

    ) 译者增加部分 Q什么时候需要开启Read/Write A在做模型贴花时 下面为使用Paint3D制作VR书法 https://www.bilibili.com/video/BV1pa411H7fQ...•其他:设置为该值 当导入纹理时,该值默认为1。因此,除非您的目标是高规格设备,否则不建议使用强制开启设置。强制开启可以在“项目设置->质量”中的“各向异性纹理”中设置。...另一方面,对于3D模型等纹理,很难看到质量损失,因此最好找到合适的设置,例如高压缩比。 Mesh 以下是在处理导入Unity的网格(模型)时要记住的几点。可以根据设置来改进导入模型数据的性能。...当您想要比原始声源更低的采样率时,使用此选项。 将声音效果设置为单声道 默认情况下,Unity播放立体声,但通过启用强制单声道,单声道播放是启用的。...这样判断是否某个id包含在内时,不需要加载整个表,而是单独加载id的ScriptableObject文件。 运用2:技能表现编辑器的数据可以序列化为ScriptableObejct文件

    1.6K32
    领券