Unity之如何从AssetBundles加载资源

加载和卸载资源包 (AssetBundle) 中的对象

使用下载的数据构建资源包 (AssetBundle) 对象后,可以使用三种不同的方法加载其中包含的对象:

  • AssetBundle.Load 会将其名称标识符用作参数加载对象。其名称即工程 (Project) 视图中显示的名称。可选择将对象类型作为参数传递到 Load 类函数,确保加载的是特定类型的对象。

  • AssetBundle.LoadAsync 的作用原理与上述 Load 类函数相同,但不会在加载资源后阻塞主线程。此方法对于加载较大资源或一次加载多个资源很有用,可避免应用程序停止运行。
  • AssetBundle.LoadAll 将加载资源包 (AssetBundle) 中的所有对象。和 AssetBundle.Load 一样,可以按照其类型选择性地过滤对象。

要卸载资源,需要使用 AssetBundle.Unload。这个类函数包含一个布尔参数,可告诉 Unity 是卸载所有数据(包括已加载的资源对象),还是只卸载已下载资源包中的压缩数据。如果应用程序正在使用此资源包 (AssetBundle) 中的一些对象,并且需要释放一些内存,则可传递 false 以便卸载内存中的已压缩数据。如需完全卸载该资源包 (AssetBundle) 的所有对象,则应传递 true,以便销毁从资源包加载的资源 (Assets)。

从资源包 (AssetBundles) 异步加载对象

可使用 AssetBundle.LoadAsync 类函数异步加载对象,从而降低应用程序暂时中断的可能性。

时间: 2024-11-08 13:31:17

Unity之如何从AssetBundles加载资源的相关文章

关于unity 中使用AssetBundle加载资源,shader偶尔会丢失的问题解决办法

问题描述: 因为项目中要进行热更新设计,所以用unity官方推荐的打包方式assetbundle进行打包,打包好了以后再电脑上运行正常,但是当发布到android上后发现偶尔场景背景会出现空白,多方查找,发现unity存在使用assetbundle加载资源会丢失shader的问题.网上找了一些解决方式,测试可用,分享出来. 方案一:(亲测可用) 第一步,在将用到的Shader加到Editor->Graphics Settings的Shader列表里再进行打包(依赖打包) 第二步,在代码中给sha

升级MAC OS到10.13, 10.14系统后UNITY工程无法加载资源的解决办法

升级MAC OS到10.13, 10.14系统后,出现UNITY工程无法加载资源的情况: Unity项目中Asset目录显示为空! 解决办法一: 打开Launchpad中的磁盘工具 (也就是实用工具下的"磁盘工具") 新建一分区,名称大小任意,格式为MAC OS 扩展(日志式) 将unity工程移至新分区 OK,工程已经可以正常加载了 解决办法二: 1. 升级Unity版本 (如Unity5.6.6, Unity 2018.1 均可以)   2. 安装相应的补丁版Unity3D 参考链

unity3d Resources.Load动态加载资源

初步整理并且学习unity3d资源加载方法,预计用时两天完成入门学习 Unity3d常用两种加载资源方案:Resources.Load和AssetBundle Resources.Load就是从一个缺省打进程序包里的AssetBundle里加载资源 而一般AssetBundle文件需要你自己创建,运行时动态加载,可以指定路径和来源的.其实场景里所有静态的对象也有这么一个加载过程,只是Unity后台替你自动完成 一:Resources.Load:使用这种方式加载资源,首先需要下Asset目录下创建

Spring boot 国际化自动加载资源文件问题

Spring boot 国际化自动加载资源文件问题 最近在做基于Spring boot配置的项目.中间遇到一个国际化资源加载的问题,正常来说只要在application.properties文件中定义正确的资源文件路径,Spring boot就启动时就会自动加载资源. spring.messages.basename=i18n/message 但是我的项目修改后获取消息时系统报错,找不到对应语言的资源配置.于是试图找到原因.Google好久都没找到,简直好像就我一个人遇到这鬼问题一样??.只好自

iOS和tvOS游戏按需加载资源简介

摘要 与iOS 9和watchOS 2一起,苹果引入了一套新的内容分发API,以便节约设备空间,这就是按需加载资源.通过使用按需加载资源,我们可以将特定的应用程序资源托管在苹果的服务器上,然后在需要的时候进行加载.在这个教程中,我将通过开发一个图片查看应用介绍一下按需加载资源的基本用法. tvOS On Demand Reourse 按需加载 iOS开发 目录[-] 介绍 准备工作 1. 按需加载资源 益处 类别 限制 应用分片 删除按需加载资源 2. 分配和指定Tag 3. 访问按需请求资源

Android应用程序UI硬件加速渲染的预加载资源地图集服务(Asset Atlas Service)分析

我们知道,Android系统在启动的时候,会对一些系统资源进行预加载.这样不仅使得应用程序在需要时可以快速地访问这些资源,还使得这些资源能够在不同应用程序之间进行共享.在硬件加速渲染环境中,这些预加载资源还有进一步优化的空间.Android系统提供了一个地图集服务,负责将预加载资源合成为一个纹理上传到GPU去,并且能够在所有的应用程序之间进行共享.本文就详细分析这个预加载资源地图集服务的实现原理. 老罗的新浪微博:http://weibo.com/shengyangluo,欢迎关注! 资源预加载

java加载资源文件

className.class.getResourceAsStream 用法: 第一: 要加载的文件和.class文件在同一目录下,例如:com.x.y 下有类Test.class ,同时有资源文件config.properties 那么,应该有如下代码: //前面没有"/"代表当前类的目录 InputStream is1 = Test.class.getResourceAsStream("config.properties"); System.out.printl

Java加载资源文件几种方法

from: http://andyzhu.blog.51cto.com/4386758/775836/ import java.net.URL; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; public class TestMain { public static void main

coco2d-x实现Loading界面预加载资源

首先我们定义2个c++文件,一个是loadingScene.h, loadingScene.cpp 首先我们在.h里面我们定义我们的办法 #include"cocos2d.h" using namespace cocos2d; class loadingScene:public Layer { public: int nuberOfLoadedRes;//记录当前的进度 CREATE_FUNC(loadingScene); bool init(); static Scene *crea