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)...
1124 0
|
1月前
|
存储 缓存 NoSQL
数据的存储--Redis缓存存储(一)
数据的存储--Redis缓存存储(一)
|
1月前
|
存储 缓存 NoSQL
数据的存储--Redis缓存存储(二)
数据的存储--Redis缓存存储(二)
数据的存储--Redis缓存存储(二)
|
1月前
|
消息中间件 缓存 NoSQL
Redis 是一个高性能的键值对存储系统,常用于缓存、消息队列和会话管理等场景。
【10月更文挑战第4天】Redis 是一个高性能的键值对存储系统,常用于缓存、消息队列和会话管理等场景。随着数据增长,有时需要将 Redis 数据导出以进行分析、备份或迁移。本文详细介绍几种导出方法:1)使用 Redis 命令与重定向;2)利用 Redis 的 RDB 和 AOF 持久化功能;3)借助第三方工具如 `redis-dump`。每种方法均附有示例代码,帮助你轻松完成数据导出任务。无论数据量大小,总有一款适合你。
68 6
|
1月前
|
缓存 NoSQL 关系型数据库
redis和缓存及相关问题和解决办法 什么是缓存预热、缓存穿透、缓存雪崩、缓存击穿
本文深入探讨了Redis缓存的相关知识,包括缓存的概念、使用场景、可能出现的问题(缓存预热、缓存穿透、缓存雪崩、缓存击穿)及其解决方案。
164 0
redis和缓存及相关问题和解决办法 什么是缓存预热、缓存穿透、缓存雪崩、缓存击穿
|
1天前
|
缓存 NoSQL 关系型数据库
大厂面试高频:如何解决Redis缓存雪崩、缓存穿透、缓存并发等5大难题
本文详解缓存雪崩、缓存穿透、缓存并发及缓存预热等问题,提供高可用解决方案,帮助你在大厂面试和实际工作中应对这些常见并发场景。关注【mikechen的互联网架构】,10年+BAT架构经验倾囊相授。
大厂面试高频:如何解决Redis缓存雪崩、缓存穿透、缓存并发等5大难题
|
2天前
|
存储 缓存 NoSQL
【赵渝强老师】基于Redis的旁路缓存架构
本文介绍了引入缓存后的系统架构,通过缓存可以提升访问性能、降低网络拥堵、减轻服务负载和增强可扩展性。文中提供了相关图片和视频讲解,并讨论了数据库读写分离、分库分表等方法来减轻数据库压力。同时,文章也指出了缓存可能带来的复杂度增加、成本提高和数据一致性问题。
【赵渝强老师】基于Redis的旁路缓存架构
|
10天前
|
缓存 NoSQL Redis
Redis 缓存使用的实践
《Redis缓存最佳实践指南》涵盖缓存更新策略、缓存击穿防护、大key处理和性能优化。包括Cache Aside Pattern、Write Through、分布式锁、大key拆分和批量操作等技术,帮助你在项目中高效使用Redis缓存。
71 22
|
9天前
|
缓存 NoSQL 中间件
redis高并发缓存中间件总结!
本文档详细介绍了高并发缓存中间件Redis的原理、高级操作及其在电商架构中的应用。通过阿里云的角度,分析了Redis与架构的关系,并展示了无Redis和使用Redis缓存的架构图。文档还涵盖了Redis的基本特性、应用场景、安装部署步骤、配置文件详解、启动和关闭方法、systemctl管理脚本的生成以及日志警告处理等内容。适合初学者和有一定经验的技术人员参考学习。
72 7
|
14天前
|
存储 缓存 监控
利用 Redis 缓存特性避免缓存穿透的策略与方法
【10月更文挑战第23天】通过以上对利用 Redis 缓存特性避免缓存穿透的详细阐述,我们对这一策略有了更深入的理解。在实际应用中,我们需要根据具体情况灵活运用这些方法,并结合其他技术手段,共同保障系统的稳定和高效运行。同时,要不断关注 Redis 缓存特性的发展和变化,及时调整策略,以应对不断出现的新挑战。
46 10