广告
返回顶部
首页 > 资讯 > 后端开发 > Python >Unity3d Android无法加载a
  • 536
分享到

Unity3d Android无法加载a

加载Unity3dAndroid 2023-01-31 03:01:13 536人浏览 泡泡鱼

Python 官方文档:入门教程 => 点击学习

摘要

前几天做了AssentBundle的例子,遇到了问题,在论坛上问了三天都没人解答,最后在一个朋友的帮助下解决了。下面介绍AssentBundle。AssetBundles让你通过WWW类流式加载额外的资源并在运行时实例化它们。AssetBu

  • 前几天做了AssentBundle的例子,遇到了问题,在论坛上问了三天都没人解答,最后在一个朋友的帮助下解决了。下面介绍AssentBundle。

    AssetBundles让你通过WWW类流式加载额外的资源并在运行时实例化它们。AssetBundles通过BuildPipeline.BuildAssetBundle创建。

    看了雨凇MOMO的关于 AssetBundles的帖子,受益很多,但是他把资源全达成.assetbundle 二进制格式,与Unity帮助脚本中不一样,Unity帮助文档中打包和加载的文件后缀名都是.unity3D格式,而且网上其他人也都用的.unity格式,所以我也就打成.unity3d格式。

    打包AssentBundle:

    最核心的方法其实就它:

    BuildPipeline.BuildAssetBundle (obj, null, targetPath, BuildAssetBundleOptions.CollectDependencies)

    不过这是默认的电脑上打包的资源只可以电脑上用

    安卓打包需要添加参数:

    BuildPipeline.BuildAssetBundle(Selection.activeObject, selection, path, BuildAssetBundleOptions.CollectDependencies | BuildAssetBundleOptions.CompleteAssets,BuildTarget.Android);

    Iphone打包也需要添加参数:
    BuildPipeline.BuildAssetBundle(Selection.activeObject, selection, path, BuildAssetBundleOptions.CollectDependencies | BuildAssetBundleOptions.CompleteAssets,BuildTarget.iPhone);

    需要在项目文件根目录Assets下新建Editor文件夹,新建C#脚本“ExportAssetBundles”。

    using UnityEngine;
    using System.Collections;
    using UnityEditor;//必须引用此类

    public class ExportAssetBundles : MonoBehaviour
    {
    /// <summary>
    /// 将所选择的的物体和物体有依赖关系的对象一起打包
    /// </summary>
    [MenuItem("Assets/Build AssetBundle From Selection - Track dependencies")]

    static void ExportResource()
    {
    // Bring up save panel

    string path = EditorUtility.SaveFilePanel("Save Resource", "", "New Resource", "unity3d");

    if (path.Length != 0)
    {
    // Build the resource file from the active selection.
    Object[] selection = Selection.GetFiltered(typeof(Object), SelectionMode.DeepAssets);
    BuildPipeline.BuildAssetBundle(Selection.activeObject, selection, path, BuildAssetBundleOptions.CollectDependencies |

    BuildAssetBundleOptions.CompleteAssets);
    Selection.objects = selection;

    }

    }

    /// <summary>
    /// 只打包选择的物体
    /// </summary>
    [MenuItem("Assets/Build AssetBundle From Selection - No dependency tracking")]

    static void ExportResourceNoTrack()
    {
    // Bring up save panel
    string path = EditorUtility.SaveFilePanel("Save Resource", "", "New Resource", "unity3d");
    if (path.Length != 0)
    {
    // Build the resource file from the active selection.
    BuildPipeline.BuildAssetBundle(Selection.activeObject, Selection.objects, path);
    }
    }
    }

    保存之后,选中项目中的文件,鼠标右键或者Assent菜单下都会有这两个选项,根据自己的需要打包即可。

    下载AssentBundle:Assetbundle是可以同时放在服务器或者本地的,无论放在哪里两种下载读取的方式是完全一样的。所以我建议在做unity项目的时候开始就把资源放在Assetbundle中在本地来做,等做的差不多了直接把Assetbundle放在服务器上,因为两种读取的方式完全一样,这样以后更新资源会方便很多。 using UnityEngine;
    using System.Collections;public class assentBuntleScript : MonoBehaviour 

    public static readonly string URL = Http://"+"网址";网络路径
    //public static readonly string URL = "file://" + Application.dataPath+"/mm.unity3d";//本地路径 void OnGUI()
    {
    if(GUILayout.Button("下载资源"))
    {
    StartCoroutine(loadBundleOBject(URL));
    }
    } IEnumerator loadBundleOBject(string url)
    {
    WWW date = new WWW(url);
    yield return date;
    Instantiate(date.assetBundle.mainAsset);//实例化加载的资源,我加载的是个模型。
    date.assetBundle.Unload(false);
    }
    }

    下载类WWW
    WWW bundle = new WWW(path);
    这样的做法是通过一个路径进行下载(无论是服务器路径还是本地路径下载操作都一样)但是bundle只能保存在内存中,也就是退出游戏在进入还得重新下,很显然在游戏中我们不能使用这种方式。
    IEnumerator loadBundleOBject(string url)
    {
    WWW date = WWW.LoadFromCacheOrDownload(url,5);
    yield return date;
    Instantiate(date.assetBundle.mainAsset);//实例化加载的资源,我加载的是个模型。
    date.assetBundle.Unload(false);
    }
    使用的方法是WWW.LoadFromCacheOrDownload(path,5);参数1:服务器或者本地下载地址 参数2:版本号Unity会下载Assetbundle本地中,它的工作原理是先通过(版本号和下载地址)先在本地去找看有没有这个Assetbundle,如果有直接返回对象,如果没有的话,在根据这个下载地址重新从服务器或者本地下载。这里版本号起到了很重要的作用,举个例子,同一下载地址版本号为1的时候已经下载到本地,此时将版本号的参数改成2 那么它又会重新下载,如果还保持版本号为1那么它会从本地读取,因为本地已经有版本号为1的这个Assetbundle了。你不用担心你的资源本地下载过多,也不用自己手动删除他们,这一切的一切Unity会帮我们自动完成,它会自动删除掉下载后最不常用的Assetbundle ,如果下次需要使用的话只要提供下载地址和版本后它会重新下载。(转自雨松MOMO研究院)
    Assetbundle 中的脚本,在移动平台下Assetbundle里面放的脚本是不会被执行的,在手机上将Assetbundle下载到本地后,加载进游戏中Prefab会自动在本地找它身上挂着的脚本,他是根据脚本的名来寻找,如果本地有这条脚本的话,Prefab会把这个脚本重新绑定在自身,并且会把打包前的参数传递进来。如果本地没有,身上挂的条脚本永远都不会被执行。(转自雨松MOMO研究院)

    最后再说说我遇到的问题,本地加载.unity3d的资源没问题,但是我挂到IIS上就失败了,显示404错误,找不到资源,无法实例化。这就需要配置服务器的MIME了,因为服务器不识别.unity3d格式的资源,所以服务器不响应请求,所以就下不下来。
    这样就行了,可以下载.unity3d,这就是困扰我三天的问题啊,怎么都下载不了,最终是这么个问题。



    编译目标:

引用:http://www.it165.net/pro/html/201402/9730.html

--结束END--

本文标题: Unity3d Android无法加载a

本文链接: https://www.lsjlt.com/news/187173.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Unity3d Android无法加载a
    前几天做了AssentBundle的例子,遇到了问题,在论坛上问了三天都没人解答,最后在一个朋友的帮助下解决了。下面介绍AssentBundle。AssetBundles让你通过WWW类流式加载额外的资源并在运行时实例化它们。AssetBu...
    99+
    2023-01-31
    加载 Unity3d Android
  • ie无法加载css
    只要你在网页浏览过程中经常使用电脑,就不会对IE浏览器感到陌生。然而,使用IE浏览器时可能会遇到一些奇怪的问题。其中之一是“IE无法加载CSS”错误。在这篇文章中,我们将介绍这个问题的原因和解决方法。原因首先,我们需要了解为什么会发生这种情...
    99+
    2023-05-21
  • openstack中控制台无法加载 加载太慢
    如果在OpenStack控制台加载过慢或无法加载,可能有以下几个原因和解决方法:1. 网络连接问题:请确保您的网络连接稳定,并且能够...
    99+
    2023-10-11
    openstack
  • php_curl无法加载的解决方法
    这篇文章主要为大家展示了php_curl无法加载的解决方法,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带大家一起来研究并学习一下“php_curl无法加载的解决方法”这篇文章吧。php_curl无法加载的解决办法:1、在p...
    99+
    2023-06-14
  • macOS Ventura sublime无法加载Package Control
    突然发现我的sublime text 的package control不起作用了,设置也变成灰色的了。 本以为是st出问题了,从官网重新下载,然后点菜单命令中的install package control,还是一样的不起作用。 启动st...
    99+
    2023-09-17
    macos sublime text package control
  • windows无法加载如何解决
    Windows 无法加载的问题可能有很多原因,以下是一些可能的解决方法:1. 重启计算机:有时候,简单地重启计算机就能解决问题。尝试...
    99+
    2023-09-18
    windows
  • PHP xcache无法加载怎么办
    本文操作环境:Windows7系统、PHP7.1版、DELL G3电脑PHP xcache无法加载怎么办Apache PHP XCache 加载失败的解决日志中存在错误:PHP Fatal error: XCache: entries O...
    99+
    2014-11-02
    PHP xcache
  • phpmyadmin无法加载mysqli的解决方法
    这篇文章将为大家详细讲解有关phpmyadmin无法加载mysqli的解决方法,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。phpmyadmin无法加载mysqli怎么办...
    99+
    2022-10-18
    phpmyadmin mysqli mi
  • php7无法加载curl的解决方法
    这篇文章主要介绍了php7无法加载curl的解决方法,具有一定借鉴价值,需要的朋友可以参考下。下面就和我一起来看看吧。为了快速救火先贴出解决办法:#在apache 的主配置文件httpd.conf中加入LoadFile ...
    99+
    2023-06-15
  • 找不到或无法加载主类
    找不到或无法加载主类的解决办法:1、检查代码和项目结构;2、检查Classpath路径;3、检查环境变量;4、检查编译和运行命令;5、清除缓存。在进行Java编程和运行过程中,有时候会遇到“找不到或无法加载主类”的问题。这个问题的出现可能是...
    99+
    2023-07-27
  • php无法加载js css怎么办
    本文操作环境:windows7系统、PHP7.1版、DELL G3电脑php无法加载js css怎么办php无法加载js css的解决办法:路径必须要绝对正确,基于项目之后的js、css文件位置路径必须是绝对路径   (例如项目的位置在D...
    99+
    2021-01-31
    php js css
  • Android Studio下载更新Android SDK网络异常或无法下载
    Android Studio下载更新Android SDK网络异常或无法下载 今天重新安装了下Android Studio,在安装SDK时老是提示网络异常,于是上网查了下, 解...
    99+
    2022-06-06
    Android Studio 异常 studio sdk Android
  • Android图片加载库Glide用法
    目录Glide介绍Android SDK 要求使用前的准备基本用法在 ListView 和 RecyclerView 中的使用占位符选项过渡动画变换效果使用示例Glide介绍 Gli...
    99+
    2022-11-12
    Android图片加载库 Android图片加载库Glide用法
  • Android Jetpack Compose无限加载列表的示例分析
    本文将为大家详细介绍“Android Jetpack Compose无限加载列表的示例分析”,内容步骤清晰详细,细节处理妥当,而小编每天都会更新不同的知识点,希望这篇“Android Jetpack ...
    99+
    2023-06-26
  • 【启动程序是无法加载 libnsl.so.1】
    libnsl.so.1 java -jar裸露启动jar程序时候,报错找不到libnsl.so.l原因解决办法 java -jar裸露启动jar程序时候,报错找不到libnsl.so....
    99+
    2023-09-07
    linux 运维 服务器
  • thinkphp中无法加载数据库驱动
    在Home同级的目录Common\Conf的config.php配置文件//数据库配置信息'DB_TYPE' => 'mysql', // 数据库类型'DB_HOST' => 'localhos...
    99+
    2022-10-18
    数据库表 配置文件 localhost
  • java中无法加载主类怎么办
    如果在Java中无法加载主类,可以尝试以下几种方法进行排查和解决:1. 检查是否正确设置了类路径(classpath)。确保将所有需...
    99+
    2023-09-07
    java
  • iframe参数无法加载怎么解决
    当iframe参数无法加载时,可能有以下几种解决方法:1. 检查URL是否正确:确保iframe指定的URL地址正确无误,可以尝试手...
    99+
    2023-08-08
    iframe
  • eclipse无法加载主类如何解决
    当Eclipse无法加载主类时,可能是由于以下几个原因:1. 项目配置问题:检查项目的构建路径和设置,确保主类在正确的位置,并且在项...
    99+
    2023-09-26
    eclipse
  • php中无法加载mysql如何解决
    这期内容当中小编将会给大家带来有关php中无法加载mysql如何解决,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。php的框架有哪些php的框架:1、Laravel,Laravel是一款免费并且开源的PH...
    99+
    2023-06-14
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作