/// <summary>
/// 加载GLB/GLTF模型
/// </summary>
public class LoadGLB_GLTFUtility :MonoBehaviour
{Action action;public GameObject ObjOfImport;bool isCreate = true;private static LoadGLB_GLTFUtility instance;public static LoadGLB_GLTFUtility Instance{get{if (instance == null){GameObject obj = new GameObject();obj.name = "LoadGLBUtility";instance = obj.AddComponent<LoadGLB_GLTFUtility>();}return instance;}}/// <summary>/// 导入网络glb资源/// </summary>/// <param name="url">模型路径</param>/// <param name="action">导入完成事件</param>public void  ImportGLB_GLTFAsyncByWed(string url, Action action){StartCoroutine(DownLoadFile(url, action));}/// <summary>/// 导入网络glb资源/// </summary>/// <param name="url">路径</param>public void ImportGLBAsyncByWed(string url){StartCoroutine(DownLoadFile(url, null));}/// <summary>/// 下载网络资源到本地/// </summary>/// <param name="url"></param>/// <returns></returns>IEnumerator DownLoadFile(string url,Action action){yield return new WaitForSeconds(0.5f);string directoryPath = Application.persistentDataPath + "/FileCache";if (!Directory.Exists(directoryPath)){Directory.CreateDirectory(directoryPath);}string downloadFileName = url.Substring(url.LastIndexOf('/') + 1);string localpath = directoryPath + "/" + downloadFileName;Debug.Log(downloadFileName);//如果本地文件已存在 直接加载if (File.Exists(localpath)){ImportGLB_GLTFAsync(localpath, action);yield break;}UnityWebRequest webRequest = UnityWebRequest.Get(url);webRequest.timeout = 60;yield return webRequest.SendWebRequest();if (webRequest.isNetworkError){Debug.Log("Download Error: " + webRequest.error);if (File.Exists(localpath)){File.Delete(localpath);}}else{var file = webRequest.downloadHandler.data;FileStream nFile = new FileStream(localpath, FileMode.Create);nFile.Write(file, 0, file.Length);nFile.Close();ImportGLB_GLTFAsync(localpath, action);}}/// <summary>/// 异步加载 gltf and glb/// </summary>/// <param name="filepath">路径</param>/// <param name="action">回调函数</param>public void ImportGLB_GLTFAsync(string filepath, Action action){if (!isCreate) return;isCreate = false;UnloadAndDestroy(ObjOfImport);Importer.LoadFromFileAsync(filepath, new ImportSettings(), OnFinishAsync);this.action = action;}/// <summary>///异步加载模型/// </summary>/// <param name="filepath"><路径/param>public void ImportGLB_GLTFAsync(string filepath){if (!isCreate) return;isCreate = false;UnloadAndDestroy(ObjOfImport);Importer.LoadFromFileAsync(filepath, new ImportSettings(), OnFinishAsync);}/// <summary>/// 完成加载/// </summary>/// <param name="result">加载出来的物体</param>/// <param name="clip">加载的动画</param>/// <param name="transform"></param>/// <param name="name"></param>void OnFinishAsync(GameObject result, AnimationClip[] clip, Transform loadpos, string sign){ObjOfImport = result;isCreate = true;Debug.Log("Finished importing " + result.name);if (action != null)action();}/// <summary>/// 删除卸载 所有加载过的模型 清除缓存/// </summary>/// <param name="obj"></param>public void UnloadAndDestroy(GameObject obj){if (obj != null){GameObject.Destroy(obj);}Resources.UnloadUnusedAssets();}}

Unity3D 动态加载本地/网络GLB模型相关推荐

  1. Android插件化开发之动态加载本地皮肤包进行换肤

    Android插件化开发之动态加载本地皮肤包进行换肤 前言: 本文主要讲解如何用开源换肤框架 android-skin-loader-lib来实现加载本地皮肤包文件进行换肤,具体可自行参考框架原理进行 ...

  2. vue 动态获取的图片路径不显示_解决Vue动态加载本地图片问题

    最近遇到了个问题,用v-bind动态绑定img的src,图片加载不出来.控制台显示src是有获取到图片地址的,可是就是加载不出来. 最后才发现原因原来是浏览器中直接显示'./img/img1.png' ...

  3. vue+element-ui 动态加载本地图片

    最近用element-ui实现图片展示时,发先本地的图片加载不了,一开始是这么写的 <el-imageclass="table-td-thumb":src="'.. ...

  4. Unity3D 动态加载CAD模型 最后总结

    相关技术文档下载:网盘技术宣传文档 请大家先看过文档之后再来咨询 我不是销售而是技术人员 FQA 能不能直接转换? 不能!不能!不能!重要的事情说三遍!需要转中间格式(svz,公司自有) 中间格式那么 ...

  5. cesium加载并聚焦glb模型

    文章目录 1.实现效果 2.实现方法 2.1实现思路 2.2具体代码 Cesium实战系列文章总目录: 传送门 1.实现效果 2.实现方法 2.1实现思路 (1)参考官方加载模型的沙盒示例:传送门 ( ...

  6. android 动态换肤框架,GitHub - ss520k/Android-Skin-Loader: 一个通过动态加载本地皮肤包进行换肤的皮肤框架...

    Android-Skin-Loader 更新日志 导入到Android Studio,使用gradle构建皮肤包(见7. 皮肤包是什么?如何生成?)(2015-12-02) 解决Fragment换肤在 ...

  7. Unity3D 动态加载资源方式

    在Unity3d游戏开发中,我们经常需要频繁创建物体,而其中的资源读取就是个问题.其中Unity为我们资源读取提供了几种基本方法,总的来说分为从内部读取和从外部读取. 1.Resources.Load ...

  8. Unity3D 动态加载 图片序列正反播放

    参考来源 跟来源的电子图书翻页多了点细节上的变化. using UnityEngine; using System.Collections; using System.Resources;public ...

  9. 动态加载本地图片资源

    记录工作中遇到的问题 图片使用变量不显示图片 图片并没有被加载出来,浏览器显示'-/-/assets/img/icons/registered.png'的字符串 //JSreturnImgUrl(im ...

最新文章

  1. 学习Kali Linux必须知道的几点
  2. 转载:keil中使用Astyle格式化你的代码的方法2篇合
  3. 我国人工智能专利申请量去年超3万件,广东领先
  4. PHP二维数组去除重复值
  5. java service wrapper jar 服务_javaservice wrapper 实现注册服务功能
  6. db2 linux 导入数据_MySQL数据的导出和导入(Linux)
  7. 小议Linux中的僵死进程
  8. 【javascipt】Generator函数(生成器)
  9. (搬运)手机卫星通信详细科普图漫版
  10. Java之路:你真的了解final吗?
  11. multisim中pwl_(Multisim电子电路仿真教程)第3章Multisim仿真元件库与虚拟仪器.ppt
  12. Numpy安装、升级与卸载
  13. w7系统里没有iis信息服务器,win7系统控制面板的管理选项没有“internet信息服务(IIS)管理器”的解决方法...
  14. 安装音量控制程序 WINDOWS
  15. java 进程通信代码
  16. c语言关于多边形的所有算法,教你如何在C语言中进行点在多边形内算法
  17. 解决 dyld: Library not loaded:Reason: image not found
  18. 前端问题记录(持续更新...)
  19. 2021中国科技大学计算机博士招生,中国科学技术大学2021年拟录取博士研究生名单公示,2661人!...
  20. centos6查看运行服务器,centos如何查看端口是否开放_网站服务器运行维护,centos,端口...

热门文章

  1. 如何下载IBM服务器驱动
  2. 计算机计算exp函数原理,exp函数表示什么意思(exp怎么按计算器)
  3. 使用PHP的curl爬取百度搜索页相关搜索词
  4. STM 32简单编程实例
  5. 计算机开机变慢的十大原因
  6. [Practical.Vim(2012.9)].Drew.Neil.Tip02 学习摘要
  7. Excel速度问题探讨.
  8. Assembly x64 Intro - XMM ABS
  9. ida-IDC脚本剖析
  10. HAC集群修改为单机