unity 加载资源
Unity3D中的资源的处理种类
Unity中的资源资源的处理种类大致分为:Resources、StreamingAssets、AssetBundle
Resources
是作为一个Unity的保留文件夹出现的,也就是如果你新建的文件夹的名字叫Resources,那么里面的内容在打包时都会被无条件的打到发布包中。
特点:
- 只读,即不能动态修改。所以想要动态更新的资源不要放在这里。
- 会将文件夹内的资源打包集成到.asset文件里面。因此建议可以放一些Prefab,因为Prefab在打包时会自动过滤掉不需要的资源,有利于减小资源包的大小。
- 资源读取使用Resources.Load()。
StreamingAssets
StreamingAssets和Resources很像。同样作为一个只读的Unity3D的保留文件夹出现。不过两者也有很大的区别,那就是Resources文件夹中的内容在打包时会被压缩和加密。而StreamingAsset文件夹中的内容则会原封不动的打入包中,因此StreamingAssets主要用来存放一些二进制文件。
特点:
只读不可写。
主要用来存放二进制文件。
只能用过WWW类来读取。
AssetBundle
AssetBundle就是把prefab或者二进制文件封装成AssetBundle文件。
特点:
- 是Unity3D定义的一种二进制类型。
- 使用WWW类来下载。
Resources
首先我们新建一个Resources目录,并且并将资源放在这目录中。
using UnityEngine;
using System.Collections;
using UnityEngine.UI; public class LoadResources : MonoBehaviour { public Image image; // Use this for initialization
void Start () { image.overrideSprite = Resources.Load ("animotiong_2", typeof(Sprite)) as Sprite; } }
Resources
StreamingAssets
首先我们新建一个StreamingAssets目录,并且并将资源放在这目录中。
using UnityEngine;
using System.Collections; public class LoadResources : MonoBehaviour { string _result; // Use this for initialization
void Start () { StartCoroutine(LoadXML()); } IEnumerator LoadXML() {
string sPath= Application.streamingAssetsPath + "/test.xml";
WWW www = new WWW(sPath);
yield return www;
_result = www.text;
}
}
streamingAssetsPath
读取配置表
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using System.IO;
namespace Commom
{
///<summary>
///资源加载管理类 提供Resources加载资源相关的功能
///</summary>
public class ResourcesManager
{
private static Dictionary<string, string> resMap; //1.获取配置文件 形成数据结构Dictionary<string,string>
private static string GetConfigFile()
{
string configPath = Application.
streamingAssetsPath + "/ResConfig.txt";
//当前路径只适应于安卓平台
if (Application.platform != RuntimePlatform.Android)
configPath = "file://" + configPath; WWW www = new WWW(configPath);
//有可能文件比较大 读完
while (true)
{
if (www.isDone)
{
return www.text;
}
}
}
//2形成数据结构Dictionary<string,string>
public static void BuildMap()
{
string strConfig= GetConfigFile();
//获取配置文件
resMap = new Dictionary<string, string>();
//字符串读取器
StringReader reader= new StringReader(strConfig); //一行一行读
string line = null;
while ((line=reader.ReadLine())!=null)
{
string[] keyvalue = line.Split('=');
resMap.Add(keyvalue[], keyvalue[]);
}
//foreach (var item in resMap.Keys)
//{
// Debug.Log(resMap[item]);
//} }
static ResourcesManager()
{
BuildMap();
}
//3.根据资源名称 获取完整路径.加载资源
public static T Load<T>(string resName) where T : Object
{
//根据资源名称 查找路径
string path = resMap[resName];
//加载资源
return Resources.Load<T>(path);
}
}
}
ResourcesManager
WWW 加载资源
从网络网址加载资源
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI; public class WWWTest : MonoBehaviour
{
string url = "https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1551776540985&di=fe944512c8b2d0e80313bdc488acc4ac&imgtype=0&src=http%3A%2F%2Fimage13.m1905.cn%2Fuploadfile%2Fs2010%2F0127%2F20100127083234166.jpg"; private void Start()
{
StartCoroutine(WWW());
}
private IEnumerator WWW()
{
WWW www = new WWW(url);
yield return www; // 等待直至异步下载完成,才继续往下执行
if (!string.IsNullOrEmpty(www.error)) //检测是否www.有错误 如果不为空则终止
{
yield break;
}
if (www.isDone) //检测是否加载完成
{
transform.Find("RawImage").GetComponent<RawImage>().texture = www.texture;
}
}
}
WWWTest
unity 加载资源的更多相关文章
- 升级MAC OS到10.13, 10.14系统后UNITY工程无法加载资源的解决办法
升级MAC OS到10.13, 10.14系统后,出现UNITY工程无法加载资源的情况: Unity项目中Asset目录显示为空! 解决办法一: 打开Launchpad中的磁盘工具 (也就是实用工具下 ...
- Unity加载模块深度解析(纹理篇)
在游戏和VR项目的研发过程中,加载模块所带来的效率开销和内存占用(即“加载效率”.“场景切换速度”等)经常是开发团队非常头疼的问题,它不仅包括资源的加载耗时,同时也包含场景物件的实例化和资源卸载等.在 ...
- Unity加载模块深度解析(Shader)
作者:张鑫链接:https://zhuanlan.zhihu.com/p/21949663来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明出处. 接上一篇 加载模块深度解析(二 ...
- [转]全面理解Unity加载和内存管理
[转]全面理解Unity加载和内存管理 最近一直在和这些内容纠缠,把心得和大家共享一下: Unity里有两种动态加载机制:一是Resources.Load,一是通过AssetBundle,其实两者本质 ...
- 【Unity3D】Unity3D之 Resources.Load 动态加载资源
[Unity3D]Unity3D之 Resources.Load 动态加载资源 1.Resources.Load:使用这种方式加载资源,首先需要下Asset目录下创建一个名为Resources的文件夹 ...
- AssetBundle——外部加载资源Asset
几篇很不错的文章 AssetBundle创建到使用入门 全面理解Unity加载和内存管理 实用的创建AssetBundle的脚本 相关资源 相关的共享资源下载 本共享包括创建assetbund ...
- UE4中资源加载资源的方式
在UNITY中,我们加载资源一般是通过Resources.Load(path).即可完成.该方法返回的是Object类型.如果你想要的是材质或者贴图等等,只要价格类型转换的关键字就可以了例如 as M ...
- unity3d Resources.Load动态加载资源
初步整理并且学习unity3d资源加载方法,预计用时两天完成入门学习Unity3d常用两种加载资源方案:Resources.Load和AssetBundle Resources.Load就是从一个缺省 ...
- Unity加载AssetBundle的方法
using System.Collections; using System.Collections.Generic; using UnityEngine; using System.IO; usin ...
随机推荐
- Linux安装imagick扩展出现错误:configure: error: not found. Please provide a path to MagickWand-config or Wand-config program.
在Linux(CentOS)上安装imagick扩展时,遇到如下错误: checking ImageMagick MagickWand API configuration program... che ...
- 好记性不如烂笔头-linux学习笔记6keepalived实现主备操作
Keepalived的作用是检测服务器的状态,如果有一台web服务器宕机,或工作出现故障,Keepalived将检测到,并将有故障的服务器从系统中剔除,同时使用其他服务器代替该服务器的工作,当服务器工 ...
- CUDA 新版本 Visual Studio 和 CUDA 兼容性的小问题
▶ 升级到 Visual Studio 2017 和 CUDA 9.1 之后,直接编译以前的 CUDA C 程序出现了如下报错: 严重性 代码 说明 项目 文件 行 禁止显示状态 错误(活动) E00 ...
- Git---时光穿梭机之版本回退02
现在你的本地仓库底下添加一个readme.txt文件 第一次readme.txt的内容如下:: Git is a version control systemGit is free sofwore 然 ...
- XGBoost参数调优
XGBoost参数调优 http://blog.csdn.net/hhy518518/article/details/54988024 摘要: 转载:http://blog.csdn.NET/han_ ...
- Code First 之类继承
关于Entity Framework 的code first 模式,相信大家都不陌生了.本文就来看看实体继承在 codefirst里的用法. 第一步 添加 code first 的环境 这里为了方便 ...
- java可视化
1.java关闭窗口代码. ft.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); IE打开 Weiler-Atherton任意多边形裁剪 http:/ ...
- 统计学中z分布、t分布、F分布及χ^2分布
Z就是正态分布,X^2分布是一个正态分布的平方,t分布是一个正态分布除以(一个X^2分布除以它的自由度然后开根号),F分布是两个卡方分布分布除以他们各自的自由度再相除 比如X是一个Z分布,Y(n)=X ...
- Requests接口测试-对cookies的操作处理(一)
大家都对cookie都不陌生,我们本篇文章使用requests结合cookie进行实例演示.我们使用一个接口项目地址,因为接口项目涉及到隐私问题,所以这里接口的地址我暂时不会给大家开放,但是我会给大家 ...
- Jenkins执行selenium报错unknown error: cannot find Chrome binary
问题描述:在Pycharm中执行selenium测试用例,可以正常运行, 集成在Jenkins中,构建时,发现构建成功,但是查看Console Output,报错:unknown error: can ...