WWW缓存方式

简介:

缓存方式

使用WWW.LoadFromCacheOrDownload接口。AssetBundles将保存在本地设备的Unity的缓存文件夹中。WebPlayer 有50MB的缓存上限,PC/Mac/Android/IOS应有有4 GB的缓存上限。这种方式也是加载AssetBundle推荐的方式。我们使用这种方式来实践一下。在Scripts文件夹中新建脚本:

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
using  System;
using  UnityEngine;
using  System.Collections;
 
public  class  CacheBundle : MonoBehaviour
{
     public  static  readonly  string  BundleURL =
#if UNITY_ANDROID
         "jar:file://"  + Application.dataPath +  "!/assets/MyAssetBundles/shape/cube" ;
#elif UNITY_IPHONE
         Application.dataPath +  "/Raw/MyAssetBundles/shape/cube" ;
#elif UNITY_STANDALONE_WIN || UNITY_EDITOR
         //我们将加载以前打包好的cube
  "file://"  + Application.dataPath +  "/MyAssetBundles/shape/cube" ;//由于是编辑器下,我们使用这个路径。
#else
         string .Empty;
#endif
 
     //还记得吗?在cube这个AssetBundle中有两个资源,Cube1和Cube2
     private  string  AssetName =  "Cube2" ;
 
     //版本号
     public  int  version;
 
     void  Start()
     {
         StartCoroutine(DownloadAndCache());
     }
 
     IEnumerator DownloadAndCache()
     {
         // 需要等待缓存准备好
         while  (!Caching.ready)
             yield  return  null ;
 
         // 有相同版本号的AssetBundle就从缓存中获取,否则下载进缓存。
         using  (WWW www = WWW.LoadFromCacheOrDownload(BundleURL, version))
         {
             yield  return  www;
             if  (www.error !=  null )
                 throw  new  Exception( "WWW download had an error:"  + www.error);
             AssetBundle bundle = www.assetBundle;
             GameObject cube = Instantiate(bundle.LoadAsset(AssetName))  as  GameObject;
             cube.transform.position =  new  Vector3(1.5f, 0f, 0f);
             // 卸载加载完之后的AssetBundle,节省内存。
             bundle.Unload( false );
 
         //由于使用using语法,www.Dispose将在加载完成后调用,释放内存
     }
}

  

博主注:版本号可按天来,比如

int version;

version = DateTime.dayOfYears;

 

 

http://baizihan.me/2016/03/unity-assetbundle03/

本文转自jiahuafu博客园博客,原文链接http://www.cnblogs.com/jiahuafu/p/6594404.html如需转载请自行联系原作者


jiahuafu

相关文章
|
负载均衡 PHP Apache
测试WWW方案(反向代理,负载均衡,HTTP加速缓存)
大约图如下: NGINX FRONT(80)--->VARNISH(8080)---->LNMP BACKEND 1(80)                                                               |--->LNMP BACKEND 2(80)...
1105 0
|
4天前
|
存储 缓存 NoSQL
Redis缓存的运用
缓存预热就是系统上线后,将相关的缓存数据直接加载到缓存系统。这样就可以避免在用户请 求的时候,先查询数据库,然后再将数据缓存的问题!用户直接查询事先被预热的缓存数据!
10 1
|
18天前
|
缓存 监控 NoSQL
redis 缓存穿透 击穿 雪崩 的原因及解决方法
redis 缓存穿透 击穿 雪崩 的原因及解决方法
|
8天前
|
缓存 NoSQL Java
Java一分钟之-Spring Data Redis:使用Redis做缓存
【6月更文挑战第10天】Spring Data Redis是Spring框架的一部分,简化了Java应用与Redis的集成,支持多种数据结构操作。本文介绍了其基本使用,包括添加依赖、配置Redis连接及使用RedisTemplate。还讨论了常见问题,如序列化、缓存穿透和雪崩,并提供解决方案。通过实战示例展示了缓存与数据库读写分离的实现,强调了Spring Data Redis在提升系统性能中的作用。
35 0
|
9天前
|
存储 消息中间件 缓存
Redis:内存数据存储与缓存系统的技术探索
**Redis 概述与最佳实践** Redis,全称Remote Dictionary Server,是流行的内存数据结构存储系统,常用于数据库、缓存和消息中介。它支持字符串、哈希、列表等数据结构,并具备持久化、主从复制、集群部署及发布/订阅功能。Redis适用于缓存系统、计数器、消息队列、分布式锁和实时系统等场景。最佳实践包括选择合适的数据结构、优化缓存策略、监控调优、主从复制与集群部署以及确保安全配置。
|
12天前
|
存储 缓存 NoSQL
了解Redis,第一弹,什么是RedisRedis主要适用于分布式系统,用来用缓存,存储数据,在内存中存储那么为什么说是分布式呢?什么叫分布式什么是单机架构微服务架构微服务的本质
了解Redis,第一弹,什么是RedisRedis主要适用于分布式系统,用来用缓存,存储数据,在内存中存储那么为什么说是分布式呢?什么叫分布式什么是单机架构微服务架构微服务的本质
|
19天前
|
存储 缓存 NoSQL
Redis 缓存失效策略及其应用场景
Redis 缓存失效策略及其应用场景
39 1
|
21天前
|
缓存 NoSQL 关系型数据库
redis(缓存)
redis(缓存)
20 0
|
23天前
|
存储 缓存 监控
利用Redis构建高性能的缓存系统
在现代Web应用中,性能优化是提升用户体验和响应速度的关键。Redis作为一款开源的内存数据结构存储系统,因其出色的性能、丰富的数据结构和灵活的使用方式,成为了构建高性能缓存系统的首选工具。本文将探讨Redis在缓存系统中的应用,分析其优势,并通过实例展示如何结合Redis构建高效、可靠的缓存系统,以应对高并发、大数据量等挑战。
|
26天前
|
缓存 NoSQL Redis
【后端面经】【缓存】36|Redis 单线程:为什么 Redis 用单线程而 Memcached 用多线程?-- Redis多线程
【5月更文挑战第21天】Redis启用多线程后,主线程负责接收事件和命令执行,IO线程处理读写数据。请求处理流程中,主线程接收客户端请求,IO线程读取并解析命令,主线程执行后写回响应。业界普遍认为,除非必要,否则不建议启用多线程模式,因单线程性能已能满足多数需求。公司实际场景中,启用多线程使QPS提升约50%,或选择使用Redis Cluster以提升性能和可用性。
32 0