本地资源加载方法

1.   private AudioClip SetAudio(string StrPath)
    {
        AudioClip clip=null;
        clip = (AudioClip)Resources.Load(StrPath, typeof(AudioClip));
        return clip;
    }

这个是加载声音的  注意这里的strpath  如果用了Resources.Load 那么就需要assets文件夹下有Resources文件夹  资源必须在Resources文件夹里面  strpath指定Resources文件夹以下的路径

2. 路径加载  用www

public  static IEnumerator CoroutineLoad(string url, Action<WWW> action = null)  //url=Global.LOCAL_RES_URL + "card/" + cardBase.cardID + ".png"    Global.LOCAL_RES_URL="file://" + Application.dataPath + "/Cache/";
        {
            WWW www = new WWW(url);
            float time_start = Time.time;
            _retry_times = 0;
            while (!www.isDone)
            {
                if (Time.time - time_start > RETRY_LAG)
                {
                    if (_retry_times == 0)
                    {
                        _download_progress = www.progress;
                        GameLog.LogError("[DOWNLOAD]first retry: " + url + ", progress: " + _download_progress);
                        time_start = Time.time;
                        _retry_times ++;
                        continue;
                    }

if (_download_progress == www.progress)
                    {
                        if (_retry_times > 1)
                        {
                            GameLog.LogError("[DOWNLOAD]download failed: " + url + ", progress: " + _download_progress);
                            www.Dispose();
                            yield break;
                        }

www.InitWWW(url, null, null);
                        time_start = Time.time;
                        _retry_times ++;
                        continue;
                    }

_retry_times = 0;
                }
                yield return null;
            }
            //yield return www;

if (!string.IsNullOrEmpty(www.error))
            {
                Download.hasError = true;
                GameLog.LogError(www.error);
            }
            if (action != null) action(www);

www.Dispose();  这个很重要  忘写了 流就会不关闭 这样虚拟机跑不起来 
        }

3.  filePath = Application.dataPath + @"/_Image/grid.png";

FileStream fs = new
FileStream(filePath,FileMode.Open,FileAccess.Read);
           
System.Drawing.Image img =
System.Drawing.Image.FromStream(fs);
//System.Drawing.Image.FromFile(filePath);

4.

MemoryStream ms = new MemoryStream();
           
img.Save(ms,System.Drawing.Imaging.ImageFormat.Png);

Texture2D _tex2 = new Texture2D(128, 128);
           
_tex2.LoadImage(ms.ToArray());

//此处为GameObject的材质类附上读取的纹理;
           
_newObj.renderer.material.mainTexture = _tex2;

5  创建和读取资源

CreateFile(Global.LOCAL_RES_DIR, "version.bin", System.Text.Encoding.Default.GetBytes(Download.VersionLocal.Aggregate(string.Empty, (str, kv) => str + kv.Key + "," + kv.Value + "\n")));

CreateFile(Global.LOCAL_RES_DIR, "version.bin", null, false);

public void CreateFile(string path, string name, byte [] content = null, bool replace = true)
        {
            if (!Directory.Exists(path)) Directory.CreateDirectory(path);

string fileName = path + "/" + name;
            if (File.Exists(fileName) && !replace) return;

try
            {
                FileStream fileStream = new FileStream(fileName, FileMode.Create);
                if (content != null) fileStream.Write(content, 0, content.Length);
                fileStream.Flush();
                fileStream.Close();
            }
            catch (IOException ex)
            {
                GameLog.LogError(ex.Message);
            }
        }

时间: 2024-07-29 17:33:21

本地资源加载方法的相关文章

【原创】我所理解的资源加载方式

最近转战unity3d,接的第一个任务就是关于资源管理的部分. 由于项目是web和standalone(微端)并存的,所以希望保证业务逻辑尽量保持一致,跟之前ios,android的执行流程略有不同,比如在web模式下,FILE类是被禁用的,所以指望通过写文件来操作相关功能参数的方法是不可行的.下面,是我对这方面的一些理解.本文中如果没有特殊说明,下载的资源都是AssetBundle web程序的运行流程大致是 首先加载web.html,这是整个程序的入口 他会加载相关的unity3d文件(本例

插件式换肤框架搭建 - 资源加载源码分析

1. 概述 大部分控件我们都会使用,但是我们未必知道其资源加载的原理,目前换肤的框架比较多我们可以随随便便拿过来用,但早在几年前这些资料是比较少的,如果想做一个换肤的框架那就只能自己一点一点啃源码. 如果说我们现在不去用第三方的开源框架,要做一个换肤的功能,摆在我们面前的其实只有一个问题需要解决,那就是如何读取另外一个皮肤apk中的资源. 所有分享大纲:2017Android进阶之路与你同行 视频讲解地址:http://pan.baidu.com/s/1bC3lAQ 2. 资源加载源码分析 2.

Android插件化探索(二)资源加载

前情提要 在探索资源加载方式之前,我们先来看看上一篇中没细讲的东西.还没看过的建议先看上一篇Android插件化探索(一)类加载器DexClassLoader. PathClassLoader和DexClassLoader的区别 DexClassLoader的源码如下: public class DexClassLoader extends BaseDexClassLoader { //支持从任何地方的apk/jar/dex中读取 public DexClassLoader(String dex

《Spring揭秘》——IOC梳理3(资源加载,国际化)

资源访问 JDK提供的访问资源的类并不能很好的满足各类资源访问需求,Spring提供了Resource接口以实现更强大的访问底层资源的能力. Resource具体实现类: ByteArrayResource :二进制数组表示的资源,二进制数组资源可以在内存中通过持续构造: ClassPathResource :类路径下的资源,资源以相对于类路径的方式表示: FileSystemResource :文件系统资源,资源以文件系统路径的方式表示: UrlResource :封装了java.net.UR

网页的资源加载优化

移动开发中很重要的一块是资源的加载优化.移动开发由于网速低带宽,高延迟,移动设备小内存,低处理器性能的原因,因此很多时候不得不通过优化前端页面的性能来满足用户对网页加载的预期. 前段时间做了相关方面的优化,发现网上的中文教程比较少,都是照着chrome开发者网站上一步一步看下来,找问题来解决,因此将部分有用的网页整理翻译了一下. 一.查看网页加载速度 网页加载时长受到网速影响,一般采用浏览器模拟一个特定网速进行测试,这样优化前与优化后的结果会有一个较准确的对比. 方法:打开调试面板-选择网速,一

15.资源加载器,根据配置文件自动加载文件

前言 以前我想自己写一个加载器,用的时候加载,不用的时候再去掉,结果发现这种方式可能因为资源不统一在安卓上可能出现问题,所以搜集资料,弄成根据配置文件加载 思路 设定两个配置文件,screen,res,不同场景对应不同的screen,不同screen使用的资源为res,当切换的screen的res相同时,不对资源处理,直接切换,否则进入load场景等待资源加载和卸载,然后再跳转场景 下图为场景screen配置文件和资源res配置文件,screen配置了加载的背景图(bgImage),随后做配置化

插件化框架解读之Android 资源加载机制详解(二)

阿里P7移动互联网架构师进阶视频(每日更新中)免费学习请点击:https://space.bilibili.com/474380680Android提供了一种非常灵活的资源系统,可以根据不同的条件提供可替代资源.因此,系统基于很少的改造就能支持新特性,比如Android N中的分屏模式.这也是Android强大部分之一.本文主要讲述Android资源系统的实现原理,以及在应用开发中需要注意的事项. 一.定义资源 Android使用XML文件描述各种资源,包括字符串.颜色.尺寸.主题.布局.甚至是

扣丁音乐(四)——本地音乐加载

本文出自:http://blog.csdn.net/dt235201314/article/details/51341078 一丶本地音乐加载相当于就是listVIew应用 扣丁音乐1.0前部分(gif图大小限制)演示: 实体类Mp3Info(歌曲相关数据及get和set方法) public class Mp3Info { private long id; private String title;//歌名 private String artist;//艺术家 private String a

Unity3d热更新全书-资源加载(一)从AssetBundle说起

Unity3D动态下载资源,有没有解?有,AssetBundle就是通用解,任何一本书都会花大幅篇章来介绍AssetBundle. 我们也来说说AssetBundle 我们试全面的分析一下Unity3D提供的资源加载机制 1.Resources//内嵌资源,使用方法Resources.Load,可以加载任意种类的资源,不能动态修改,卒. 2.StreamingAssets//随包资源,使用方法IO或WWW.Load.WWW.Load可以加载任意种类资源,IO仅限bytes 和 text. 3.W