搜索
查看
编辑修改
首页
UNITY
NODEJS
PYTHON
AI
GIT
PHP
GO
CEF3
JAVA
HTML
CSS
搜索
花生_TL007
这个屌丝很懒,什么也没留下!
关注作者
热门标签
jquery
HTML
CSS
PHP
ASP
PYTHON
GO
AI
C
C++
C#
PHOTOSHOP
UNITY
iOS
android
vue
xml
爬虫
SEO
LINUX
WINDOWS
JAVA
MFC
CEF3
CAD
NODEJS
GIT
Pyppeteer
article
热门文章
1
Vue axios封装, axios重复请求_uni-app的axios自动拼接了两次域名
2
Spring Boot使用easy poi
3
【JavaWeb】Tomacat部署Web项目_tomcat部署web项目
4
爆料!互联网大厂的职级和薪资范围_小米 晋升年限
5
【C语言】字符串函数_c语言一个字符串固定长度
6
百度网盘非会员倍速播放(电脑端)_电脑百度网盘没会员怎么倍速
7
<网络安全>《1 国内主要企业网络安全公司概览(一)》
8
python查看是否开机_python自动循环定时开关机(非重启)测试
9
如何设置python程序在window后台运行,开机自启动_python 开机自启 无需登录
10
KingbaseES R6 主备流复制集群创建级联复制案例
当前位置:
article
> 正文
AssetsBuddle_loadasset
("assetbundlemanifes
作者:花生_TL007 | 2024-02-14 22:38:29
赞
踩
loadasset
("assetbundlemanifest") 为空
部分内容引自SIKI学院
CreateAssetBundles:
[
MenuItem
(
"AssetBundles/Build AssetBundles"
)]
static
void
BuildAllAssetBundles
()
{
string
dir =
"AssetBundles"
;
if
(
Directory
.
Exists
(dir)==
false
)
{
Directory
.
CreateDirectory
(dir);
}
BuildPipeline
.
BuildAssetBundles
(dir,
BuildAssetBundleOptions
.
UncompressedAssetBundle
,
BuildTarget
.
StandaloneWindows64
);
}
或者:
[MenuItem("TobyStarkTools/AssetBundle/PackingAB")]
static void BuildAssetBundle()
{
//打包到Asset目录外面
string path = Application.dataPath + "/../www/AssetBundls";
if (!System.IO.Directory.Exists(path))
{
System.IO.Directory.CreateDirectory(path);
}
if (BuildPipeline.BuildAssetBundles(path,
BuildAssetBundleOptions.None,
BuildTarget.StandaloneWindows64))
{
Debug.Log("打包成功");
}
清理:
[
MenuItem
(
"AssetBundles/clear AssetBundles"
)]
static
void
Clear
(){
string
dir =
"AssetBundles"
;
if
(
Directory
.
Exists
(dir)==
true
)
{
string
path =
Application
.
dataPath
+
"/../"
+ dir+
"/"
;
Directory
.
Delete
(path,
true
);
}
}
或者:
[MenuItem("aaa/b")]
static void de(){
string path = Application.dataPath + "/../www/AssetBundls";
System.IO.Directory.Delete (path,true);
Debug.Log ("清除成功");
}
LoadAssets:
加载一种资源
string
path =
"AssetBundles/cubewall.ab"
;
AssetBundle ab = AssetBundle.LoadFromFile(path);
GameObject wallPrefab = ab.LoadAsset<GameObject>("CubeWall");
Instantiate(wallPrefab);
yield
return
null
;
加载所有资源
AssetBundle ab2 = AssetBundle.LoadFromFile("AssetBundles/cubewall.ab");
Object[] objs= ab2.LoadAllAssets();
foreach(Object o in objs)
{
Instantiate(o);
}
第一种加载AB的方式 LoadFromMemoryAsync
AssetBundleCreateRequest request = AssetBundle.LoadFromMemoryAsync(File.ReadAllBytes(path));
yield
return
request;
AssetBundle ab = request.assetBundle;
GameObject wallPrefab = ab.LoadAsset<GameObject>(
"CubeWall"
);
Instantiate(wallPrefab);
第二种加载AB的方式 LoadFromFile
AssetBundleCreateRequest request = AssetBundle.LoadFromFileAsync(path);
yield
return
request;
AssetBundle ab = request.assetBundle;
GameObject wallPrefab = ab.LoadAsset<GameObject>(
"CubeWall"
);
Instantiate(wallPrefab);
第三种加载AB的方式 WWW
如果是本地服务器:
while
(Caching.ready ==
false
)
{
yield
return
null
;
}
WWW www =
WWW.LoadFromCacheOrDownload
(
@"file://F:\CodeFiles\unity\Framwork\AB\AssetBundleProject\AssetBundles\cubewall.ab"
,
2
);
WWW www =
WWW.LoadFromCacheOrDownload
(
@"
http://localhost/AssetBundles/cubewall.ab
"
,
2
);
yield
return
www;
if
(
string
.IsNullOrEmpty(
www.error)==
false
)
{
Debug.Log(
www.error
);
yield
break
;
}
AssetBundle ab =
www.assetBundle
;
GameObject wallPrefab = ab.LoadAsset<GameObject>(
"CubeWall"
);
Instantiate(wallPrefab);
第四种方式 使用UnityWebRequest
//string uri = @"file://F:\CodeFiles\unity\Framwork\AB\AssetBundleProject\AssetBundles\cubewall.ab";
string
uri =
@"
http://localhost/AssetBundles/cubewall.ab
"
;
UnityWebRequest request = UnityWebRequest.GetAssetBundle(uri);
yield
return
request.Send();
//AssetBundle ab = DownloadHandlerAssetBundle.GetContent(request);
AssetBundle ab = (request.downloadHandler
as
DownloadHandlerAssetBundle).assetBundle;
GameObject wallPrefab = ab.LoadAsset<GameObject>(
"CubeWall"
);
Instantiate(wallPrefab);
Instantiate(wallPrefab);
//加载依赖文件
AssetBundle
manifestAB =
AssetBundle
.
LoadFromFile
(
"AssetBundles/AssetBundles"
);
AssetBundle
ab =
AssetBundle
.
LoadFromFile
(
"AssetBundles/cubewall.ab"
);
AssetBundleManifest
manifest = manifestAB.
LoadAsset
<
AssetBundleManifest
>(
"AssetBundleManifest"
);
string
[] strs = manifest.
GetAllDependencies
(
"cubewall.ab"
);
foreach
(
string
name
in
strs)
{
print
(name);
AssetBundle
.
LoadFromFile
(
"AssetBundles/"
+ name);
}
GameObject
wallPrefab = ab.
LoadAsset
<
GameObject
>(
"CubeWall"
);
Instantiate
(wallPrefab);
或者:
//从AB中加载资源,需要实例化预设 显然不能只加载Prefab,因为他依赖了模型和材质,需要去解决他们的依赖关系
private string m_ABPath = "";
//依赖文件
private AssetBundleManifest m_Manifest;
void Start ()
{
m_ABPath = Application.dataPath + "/../www/AssetBundls/";
AssetBundle mainfestBundle = null;
//1.先加载依赖文件
m_Manifest = LoadAsset<AssetBundleManifest>("AssetBundls","AssetBundleManifest",out mainfestBundle);
string abName = "Download/Prefab/EnvPrefabs/a.assetbundle";
//2.再加载依赖项 获取哪一个ab包的依赖项
string[] arrDps = m_Manifest.GetAllDependencies(abName);
AssetBundle[] arrDpsBundle = new AssetBundle[arrDps.Length];
for (int i = 0; i < arrDps.Length; i++)
{
AssetBundle dpsBundle = null;
//注意依赖项的 路径
LoadAsset<Object>(arrDps[i], arrDps[i],out dpsBundle);
arrDpsBundle[i] = dpsBundle;
Debug.Log("2加载依赖项->"+arrDps[i]);
}
//3.最后加载预设体 并clone
AssetBundle jianzuBundle = null;
GameObject objPrefab = LoadAsset<GameObject>(abName, "a",out jianzuBundle);
Instantiate(objPrefab);
//-----------------------卸载资源镜像
//卸载预设AB镜像
jianzuBundle.Unload(true);
//卸载依赖项的AB镜像
for (int i = 0; i < arrDpsBundle.Length; i++)
{
arrDpsBundle[i].Unload(false);
}
//卸载依赖文件AB镜像
mainfestBundle.Unload(true);
}
public T LoadAsset<T>(string abName,string SourceName)where T:Object
{
AssetBundle ab= AssetBundle.LoadFromFile(string.Format("{0}/{1}", m_ABPath, abName));
return ab.LoadAsset<T>(SourceName);
}
//方便卸载AB的镜像,所以需要调用者再次获取到这个AB
public T LoadAsset<T>(string abName,string SourceName,out AssetBundle ab)where T:Object
{
ab= AssetBundle.LoadFromFile(string.Format("{0}/{1}", m_ABPath, abName));
return ab.LoadAsset<T>(SourceName);
}
文件校验:
声明:
本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:
https://www.wpsshop.cn/w/花生_TL007/article/detail/82266
推荐阅读
article
【
Docker
】安装
Nacos
容器并根据
Nginx
实现负载均衡_
nginx
nacos
...
将
Nginx
与
Nacos
一起使用,可以实现更强大的负载均衡功能。通常情况下,
Nginx
可以充当反向代理服务器,接收客户端...
赞
踩
article
Unity
AssetBundle
详细解析_
unity
bundle
...
AssetBundle
使用1.1
AssetBundle
介绍
AssetBundle
是将资源使用
Unity
提供的一种用于存...
赞
踩
article
Qt
、
Qt
Creator
下载、安装...
Qt
是一个跨平台应用开发框架。
Qt
Creator
是一个跨平台的集成开发环境(IDE),集成了
Qt
所提供的功能,可以单独...
赞
踩
article
OpenCV
图像
处理-图片
拼接
(Python)_
python
opencv
图像
拼接
...
OpenCV
图像
处理-图片
拼接
(Python),原理是特征点匹配和
图像
对接,附完整代码,仅供学习使用。
python
op...
赞
踩
article
llama
.
cpp
LLM模型
windows
cpu安装部署;
运行
LLaMA2
模型测试_
llama
...
参考:https://www.listera.top/ji-xu-zhe-teng-xia-chinese-
llama
-...
赞
踩
article
React
:
高阶
组件
|
ref
转发...
React
:
高阶
组件
|
ref
转发,介绍子
组件
通过useImperativeHandle对外暴露句柄;父
组件
通过
ref
调用...
赞
踩
article
css
宽度变化
动画
...
transition 属性设置元素当过渡效果,四个简写属性为:transition-property transitio...
赞
踩
article
Linux
系统
命令
之
mv
和
rm
和cat
命令
_
rm
和
mv
...
Linux
系统
命令
之
mv
和
rm
1、
mv
命令
是“move”单词的缩写,其功能大致和英文含义一样,可以移动文件或对其改名。这...
赞
踩
article
【
YOLOv8
改进-论文笔记】
SCConv
:
即插即用
的
空间
和
通道
重建卷积...
为
SCConv
(
空间
和
通道
重构卷积),以减少冗余计算并促进代表性特征学习。所提出的
SCConv
由两个单元组成:
空间
重构单...
赞
踩
article
vue
项目快速
安装
node
-
sass
_
vue
安装
node
-
sass
...
node
-
sass
安装
方法,解决
node
-
sass
无法
安装
问题。_
vue
安装
node
-
sass
vue
安装
node
-sas...
赞
踩
article
已
解决
java
.
nio
.
channels
.
OverlappingFileLockException
异...
已
解决
java
.
nio
.
channels
.
OverlappingFileLockException
异常的正确
解决
方法,亲...
赞
踩
article
Qt
For
Android
开发
环境
配置...
基于
Qt
平台开发安卓应用 在之前的
Qt
学习中,使用
Qt
GUI来实现简单的界面与后台功能设计。这样开发出来的应用往往界面元...
赞
踩
article
Zynq-
Linux
移植学习笔记之34-使用
PCS
/
PMA
IP
核
配置
网络...
1、硬件设计设计图如下,zynq PS ETH1连接
PCS
/
PMA
IP
核。这里
PCS
/
PMA
IP
核相当于PHY,外部...
赞
踩
article
Unity
webgl
发布
微信
小游戏
_
unity
webgl
导出
微信
小游戏
...
appid写你
微信
开发者上面申请的,cdn路径可以先不写,导出路径英文名称最好 ,
小游戏
包小可以选择
小游戏
包,游戏包大就...
赞
踩
article
2023
年
年
度
总结
,
一个
小白的
CSDN
涨粉历程_软件行业2023
年
度
总结
csdn
...
CSDN
作为
一个
大型平台,在中文技术领域,功不可没,影响了一代又一代的大学生,很多人的技术启蒙,也是
CSDN
。博主和平台...
赞
踩
article
Unity
中
的
Assetbundle
,
Unity
基础知识
学习一_
unity
assetboundle
...
1.什么是
Assetbundle
2.为什么要有
Assetbundle
3.如何使用
Assetbundle
,使用Assetb...
赞
踩
article
图像处理
中
,
采用
极
线
约束
准则来
约束
特征
点匹配搜索空间
,
理论上在
极
线
上进行搜索。这里
的
极
线
是什么
线
,
怎...
在几何学
中
,
两个相机视图之间
的
极
线
几何关系可以用
本质
矩阵
或
基本
矩阵
来表示。
极
线
是通过
极
线
几何学
的
原理定义
的
。在摄影测量学...
赞
踩
article
我的1827
创作
纪念日
...
创作
纪念日
,写下所思所想我的1827
创作
纪念日
机缘 习惯性早上...
赞
踩
article
高等
代数
(四)-
矩阵
05
:
矩阵
的
分块
...
85
矩阵
的
分块
在这一节,我们来介绍一个在处理阶数较高
的
矩阵
时常用
的
方法,即
矩阵
的
分块
.有时候,我们把一个大
矩阵
看成是由...
赞
踩
article
el
ementui+(
vue3
),
el
-
input
,
el
-s
el
ect.... 去掉边框CSS_
el
...
.
el
-
input
__wrapper { border: none !important; box-shadow: no...
赞
踩
相关标签
docker
容器
运维
unity
qt
开发语言
opencv
图像处理
python
llama
react.js
前端
javascript
动画
css
css3
YOLO
论文阅读
SCConv
目标检测
vue
java
nio
Overlapping