Unity打包时遇到这个问题?

unity 打AB包中遇到的坑以及一些心得unity踩坑之旅提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档前言依旧很突然,昨晚临睡前突然收到老板的要求:把指定的美术资源打个AB包。本来想着这不小菜一碟,结果今天差点没把我噎到,特此记录一、AB包是什么,基础引入?unity官方写得很好,我就不班门弄斧了。如果太难懂的话,也可以上论坛看看各位大佬的见解,这里就不赘述了。unity的打AB包教程二、AB包怎么操作,我的见解?1.自己写编辑器脚本 (简单快捷)步骤就在里面的4-8点unity的打AB包教程在Editor文件夹创建一个脚本,用于创建AB包using System.Collections;
using System.Collections.Generic;
using UnityEditor;
using System.IO;
public class bundle
{
[MenuItem("AssetsBundle/Build AssetBundles")]
static void BuildAllAssetBundles()//进行打包
{
string dir = "AssetBundles";
//判断该目录是否存在
if (Directory.Exists(dir) == false)
{
Directory.CreateDirectory(dir);
}
//参数一为打包到哪个路径,参数二压缩选项
参数三 平台的目标
BuildPipeline.BuildAssetBundles(dir, BuildAssetBundleOptions.None, BuildTarget.Android);
}
}
下面这个是加载AB包GameObject到场景,在非Editor文件夹即可using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using System.IO;
public class BundledObj : MonoBehaviour
{
public string astName = "hello";
public string ziyuan = "GameObject";
// Start is called before the first frame update
void Start()
{
AssetBundle loc = AssetBundle.LoadFromFile(Path.Combine(Application.streamingAssetsPath, astName));
GameObject a = loc.LoadAsset<GameObject>(ziyuan);
Instantiate(a);
loc.Unload(false);
}
}
2.使用asset bundle browser (unity2020开始需要从github下载)com.unity.assetbundlebrowser3.使用addressable (最新、可寻址,据说unity在这个插件上下了大功夫,包含了发布AB包到服务器,以及如何像本地一样使用远程包)林大佬对addressable的介绍三、AB包的一些坑,我的解决?坑记录:(以下坑是使用上述方法1和方法2遇到)1.打AB包坑之一:打包、加载包的unity版本需要相同,否则读取时会报错unity Unable to read header from archive file:补充:这个错误是在使用unity2020.3.20f1c1打包,用2020.3.8f1c1加载报错;但是使用unity2019.4.4f1打包,2020.3.8f1c1加载又正常。所以结论修改为——unity2020以上请使用相同版本打包与加载20221111-2310再次补充:使用unity2020.3.20f1c1打包,用2020.3.8f1c1加载,发现没有报错。。。。。。。然而上午的时候疯狂报错,只能说人品不好,吃完饭回来什么都解决了。。2.变成粉色粉色解决有不生效的shader应该怎么办?添加到里面也没用,需要加载方也要有shader才行;试过打包shader也没用3.另外,standard的transparent不起作用?打包前看还正常,打包后没有透明效果了;也是目前无解总结提示:这里对文章进行总结:AB包的研究还要继续,有时间再继续补充,欢迎各位朋友评论
摘要:【建议收藏】最近收到的求助里面,超过80%的都是安卓打包出现的问题,这篇文章包含Unity打包安卓的所有必要条件和常见问题。洪流学堂,让你快人几步。你好,我是你的技术探路者郑洪智,你可以叫我大智。最近写了很多AR教程,在收到的小伙伴的求助里面,超过80%都是Android打包的问题。这篇就把你Android打包问题统统搞定。如果你遇到的Android打包问题本篇没有包含,可以评论或者私信我,一起完善这个攻略集。Android打包的全部必要条件:0、操作系统说明:Windows/MacOS都可以1、Unity的安装及Android Build Support的安装2、JDK的下载安装3、Android SDK的下载安装4、Unity的JDK和Android SDK设置5、Unity安卓工程的设置6、打包流程可能出现的问题1、Unity的安装及Android Build Support的安装Unity的安装应该不需要说什么了,但是如果你要打包Android包的话一定要安装Android Build Support这个组件!!建议使用Unity Hub进行安装和维护。地址:https://unity.cn/releases新安装Unity时可以带上JDK和Android SDK,一站式解决JDK/Android SDK下载安装的问题。安装一个新版本的Unity如果原来没有安装Android Build Support,在Unity Hub中可以通过如下方式安装:2、JDK的下载安装【如果第1步安装了Open JDK,可略过】强烈建议在第1步时安装内置的Open JDK如果你对JDK比较熟悉,那么你可以自己安装JDK,这样可以在不同的Unity版本之间共用。需要注意一点是:Unity目前仅支持JDK8(1.8)版本如果你机子上有多个JDK版本,一定要有一个1.8版本,在第4步指定一下JDK 1.8的目录。3、Android SDK的下载安装【如果第1步安装了Android SDK,可略过】安装Unity每个版本内置的Android SDK是最简单的方法。但是会有一个问题,那就是安装Unity版本多的话,占用的硬盘空间会很大。动手能力强的同学可以接着往下看,咱们让所有的Unity版本共用一个Android SDK。有两个方法:1、把Unity内置安装的Android SDK复制出来2、使用Android Studio管理Android SDK方法1:把Unity内置安装的Android SDK复制出来以使用UnityHub安装的Unity版本2019.3为例,Windows系统默认路径在:C:\Program Files\Unity\Hub\Editor\2019.3.0f6\Editor\Data\PlaybackEngines\AndroidPlayer\SDK你可以把SDK整个目录复制到一个地方。但是这个SDK没法直接升级,升级的时候,有一个方法是在Unity Hub中安装一下最新版本的Unity及Android和SDK,再复制出来。方法2:使用Android Studio管理Android SDKAndroid Studio是Android原生开发的IDE,下载地址是:https://developer.android.google.cn/studio下载安装后,运行Android Studio,可能会弹出如下的框:直接点Cancel,忽略它。然后可以根据配置向导配置并安装Android SDK【无墙】。如果后续想升级Android SDK时,再次打开Android studio,如下选择:更新Android SDK时,除了打开的首屏,显示的是SDK Platforms中可以更新;记得还要更新第二个选项卡中的SDK Tools!!!(很多时候报错SDK Tools 25.0.1 < 26.1.0都是第二屏中的SDK Tools版本太老)通常下面三个红框中的要更新。4、Unity的JDK和Android SDK设置【如果第1步安装了内置JDK/Android SDK,可略过】如果JDK和Android SDK是手动安装的,在Unity中需要设置一下JDK和Android SDK的路径。Unity菜单栏:Edit > Pereferences如果使用Unity Hub安装了内置的JDK和Android SDK,Unity会自动勾选使用内置的SDK。如果需要手动设置,记得Android SDK要设置为比如build-tools的父目录,例如我的是AndroidSDK。5、Unity安卓工程的设置创建工程时路径不要有中文!!!创建工程时路径不要有中文!!!创建工程时路径不要有中文!!!如何确认工程路径是否有中文呢?找到你的Unity工程目录,光标在地址栏点一下看一下是否中间有中文。比如下图中你第一眼看上去都是中文,但实际路径并没有中文。path.gif切换Platform为Android。Unity菜单栏:File > Build Settings设置Package Name在上图左下角,有一个Player Settings,点它!这个Package Name需要设置成非默认的com.Company.ProductName,需要是xxx.xxx.xxx的格式(2019.3开始Package Name默认会和项目名称关联)6、打包流程可能出现的问题上面都设置好以后就可以开始打包了,但是还有可能会出现很多问题,下面就是常见问题大全。创建工程时路径不要有中文!!!创建工程时路径不要有中文!!!创建工程时路径不要有中文!!!android build路径太长导致打包失败问题(Windows)一般提示为Unable to create xxxxx有两种方式:方法一:把工程移到盘符根目录,比如直接放D盘下面方法二:修改支持260个字符以上的路径:1、按下键盘上的Win+R键打开运行命令框,输入Gpedit.msc后回车2、一步步找本地计算机策略>计算机配置>管理模板>系统>文件系统>中有一个启用Win32长路径选项3、设置已启用后点击确定。可能需要重启计算机。卡在build gradle project(gradle代理修改)一般见于第一次打包Android包,提示可能为:Caused by: org.gradle.api.resources.ResourceException: Could not get resource 'https://jcenter.bintray.com/com/android/support/support-media-compat/27.0.2/support-media-compat-27.0.2.aar'.这是因为连接不到google maven的中心库,可以切换到国内的aliyun的源加快速度。工程内设置【适用于Unity2019.2及之前】可以使用aliyun的maven库解决,流程如下:1、勾选Player Settings里面的Publishing Settings中的Custom Gradle Template。如下图:2、勾选后会在工程中生成一个文件,路径在Plugins\Android\mainTemplate.gradle。按下图提示,修改文件中的内容为:maven{url 'http://maven.aliyun.com/nexus/content/repositories/central/'}上述方法优点:可以通过版本控制在团队中共享配置,无需每个团队成员单独设置缺点:每个工程都需要设置一次Unity全局设置【适用于所有Unity版本】Unity2019.3及之后在工程内生成的mainTemplate.gradle中没有repositories设置,所以只能修改Unity安装目录里面的.gradle模板。路径在:// 2019.3及以后
C:\Program Files\Unity\Hub\Editor\2019.2.19f1\Editor\Data\PlaybackEngines\AndroidPlayer\Tools\GradleTemplates\mainTemplate.gradle
// 2019.2及之前
C:\Program Files\Unity\Hub\Editor\2019.2.17f6\Editor\Data\PlaybackEngines\AndroidPlayer\Tools\GradleTemplates\baseProjectTemplate.gradle修改方法如图:maven{url 'http://maven.aliyun.com/nexus/content/repositories/central/'}上述方法优点:一次设置,所有使用这个版本的Unity工程都适用缺点:切换Unity版本时需要重新设置;团队小伙伴每台电脑都需要设置扩展阅读Unity SenseAR教程:人脸追踪2之探索挂点位置【含源码】SenseAR教程人脸追踪:射线检测添加装饰物SenseAR的手势识别发射爱心SenseAR的手势识别2:计算手势方向。商汤SenseAR全功能初体验(含填坑经验)视频B站链接:https://www.bilibili.com/video/av89332645SenseAR常见问题总结后续更新如果你遇到的Android打包问题本篇没有包含,可以评论或者私信我,一起完善这个攻略集。本文最新永久链接:https://www.jianshu.com/p/61d8939a4aeb好了,今天就絮絮叨叨到这里了。没讲清楚的地方欢迎评论,也可以加我微信讨论。我是大智,你的技术探路者,下次见!别走!点赞,收藏哦!好,你可以走了。

我要回帖

更多关于 unity怎么打包 的文章

 

随机推荐