Unity中一个安卓设备拆装项目,从使用到放弃ab包过程记录
项目简介:
这个是内部项目,有保密协议的,所以口述了。
这是个精密机械拆装的项目,使用unity2017.1.0f3开发,纯单机,没有后台服务器。
项目改造方向:
最近领导要求进行改造,改成前后端分离的,并且把服务器部署到云端。
解决思路:
将项目中所有场景打包成assetbundle,放到服务器上,然后本地客户端从云端下载和加载。
开始:
1,场景资源打成ab包;
一共11个场景
从A到E是进入软件的一套场景,F是过度场景,其他的是拆装场景。
直接上代码:
using UnityEngine;
using UnityEditor;
using System.IO;/// <summary>
/// 场景资源打包ab
/// </summary>
public class BuildAssetBundle{//菜单 添加场景名称[MenuItem("build/1.create All Scene AssetBundleName")]static void clearAssetBundleName(){string[] files=Directory.GetFiles (Application.dataPath, "*.unity", SearchOption.AllDirectories); for (int i = 0; i < files.Length; i++) {string currentFile=files [i].Replace ("\\", "/");int startIndex = currentFile.IndexOf ("Assets");string assetFile = currentFile.Substring (startIndex,currentFile.Length-startIndex);string sceneName = Path.GetFileNameWithoutExtension (assetFile);AssetImporter ai=AssetImporter.GetAtPath (assetFile);ai.assetBundleName = sceneName;ai.assetBundleVariant = "assetbundle";}}//打包所有AssetBundle[MenuItem("build/2.Build All AssetBundle")]static void buildAssetBundle(){string outPath=Application.streamingAssetsPath+"/AssetBundle";if (!Directory.Exists (outPath)) {Directory.CreateDirectory (outPath);}BuildPipeline.BuildAssetBundles (outPath,BuildAssetBundleOptions.None,BuildTarget.StandaloneWindows);}//清空AssetBundle[MenuItem("build/3.clear All AssetBundle")]static void clearAssetBundle(){string outPath=Application.streamingAssetsPath+"/AssetBundle";if (!Directory.Exists (outPath)) {return;}deleteFileOrFolder (outPath);AssetDatabase.Refresh ();}/// <summary>/// 删除文件/// </summary>/// <param name="fileOrFolder"></param>static void deleteFileOrFolder(string fileOrFolder){if (Directory.Exists (fileOrFolder)) {string[] allFiles=Directory.GetFiles (fileOrFolder);if (allFiles != null) {for (int i = 0; i < allFiles.Length; i++) {deleteFileOrFolder (allFiles [i]);} }string[] allFolders=Directory.GetDirectories (fileOrFolder);if (allFolders != null) {for (int i = 0; i < allFolders.Length; i++) {deleteFileOrFolder (allFolders [i]);} }Directory.Delete (fileOrFolder);}else {if (File.Exists (fileOrFolder)) {File.Delete (fileOrFolder);}}}
}
其中,根据平台要注意:BuildTarget.StandaloneWindows和BuildTarget.Android和BuildTarget.WebGL
我分别打包了三份,以备不时之需。
打包完后
2,新建空项目读取ab包。
主要代码,
运行后,可以进入第一个场景,但是后续的无法自动跳转。
然后我进行了修改,在代码里先把所有场景都加载进去,是这样的:
还是报错,无法加载脚本。
然后我把原项目中的_Scripts文件夹以及期内依赖的Plugins文件夹整体拷贝过来。
再次运行。
可以正常跳转场景,但是模型和材质丢失。并且Resource相关的api报错。
于是我干脆将所有Resource文件夹拷贝过来。
运行发现缺少本地拆装过程配置表。
都是xml。
再次运行后基本正常。仔细看发现好多坑。
坑1:RenderTexture相关的控件无法正常展示
如图,
需要重新把rendertexture拖到这里才可以正常播放
坑2:场景白化
原图是这样的
而且两个坑都没打算去想解决办法,因为这样使用ab包加载场景的方案已经被pass掉了--因为基本上把原项目里的都考过来了,有没有ab场景没太大区别了。。。
在关闭项目之前,我临时起意,打算试下网络加载ab包看看效果。
于是,我下载了apache-tomcat-8.0.39,修改server.xml配置
端口修改为8088
把ab包放到webapps里
运行tomcat
成功运行,
然后,测试访问
localhost测试
本机ip测试
都可以。
然后切换ab包加载地址
嗯,报错了
目测是缓存的问题
继续修改,www加载方式。
可以正常运行。当然,该有的坑依然存在。
Unity中一个安卓设备拆装项目,从使用到放弃ab包过程记录相关推荐
- VS2010打开项目提示未能正确加载解决方案中一个或多个项目
今天打开vs2010项目,竟然提示"未能正确加载解决方案中一个或多个项目",还有什么详细去输出看,我在网上找了下,没有解决,我看输出下边是说"C:\Program Fil ...
- 随笔-Unity中一个简易的Spine动画控制器
我们在Unity中使用Spine动画时,调整一个属性可能调用的是不同类,可能简简单单启动一个动画需要写很多个函数,于是我这边对Spine的动画控制做了一个简易的封装,在目前来说使用还是很方便的,也并不 ...
- 【Unity3D】Android 打包 ④ ( Android 工程打包 | Unity 中导出安卓工程 | Android Studio 打开 Unity 导出的 Android 工程 )
文章目录 一. Android 工程打包 二. Android Studio 打开 Unity 导出的 Android 工程 一. Android 工程打包 Android 工程打包 就是将 Unit ...
- 【100个 Unity实用技能】☀️ | Unity中 检查当前设备网络状态 的几种方法整理
Unity 小科普 老规矩,先介绍一下 Unity 的科普小知识: Unity是 实时3D互动内容创作和运营平台 . 包括游戏开发.美术.建筑.汽车设计.影视在内的所有创作者,借助 Unity 将创意 ...
- unity判断android设备,unity中判断iphone设备型号的方法
二月 02.2018. 0 Comment 在unity开发iphone app,特别是最近适配iphone x时,需要知道app目前运行的设备型号.可以通过SystemInfo.deviceMode ...
- Visual Studio 2012未能正确加载解决方案中一个或多个项目。有关详细信息,请参见“输出”窗口。
昨天把笔记本VS2012写的"网站"代码拷贝到家里的台式电脑上,双击: 出现: 这是因为在笔记本上VS2012编译的代码放到台式机上,它的物理路径发生了变化,所以导致出现了这样的问 ...
- SpringBoot 框架中 使用Spring Aop 、创建注解、创建枚举类 使用过程记录
1.开始 在Springboot框架中引入AOP <dependency><groupId>org.springframework.boot</groupId>&l ...
- Unity中AB包详解(超详细,特性,打包,加载,管理器)
Unity中的AssetBundle详解 AssetBundle的概念 AssetBundle又称AB包,是Unity提供的一种用于存储资源的资源压缩包. Unity中的AssetBundle系统是对 ...
- MFC操作多个安卓设备(发送指令)
在windows系统中访问安卓设备稍微有些麻烦,需要通过向adb.exe中写入指令进行控制.本篇主要描述MFC访问安卓设备的实例,在上一篇文章 " MFC工程按USB插口显示所有USB设备及 ...
- 第16章 Unity中的渲染优化技术
程序优化的第一条准则: 不要优化.程序优化的第二条准则(仅针对专家! 〉: 不要优化. 一一Michael A. Jackson 在进行程序优化的时候,人们经常会引用英国的计算机科学家Michael ...
最新文章
- 在linux上面合并多个windows文件乱码的问题
- 【网络安全】能在Twitter和Instagram上实现信息收集和数据获取的工具
- 301转向和网址规范化
- lodop打印不显示页码_Lodop插件实现打印功能
- L2正则没有想象那么好?可能是“权重尺度偏移”惹的祸
- ITK:优化简单的抛物面函数
- linux 内核 linux kernel travel
- zookeeper删除节点的权限_Zookeeper使用超级用户删除带权限的节点
- mysql创建表时,表的类型与java的数据类型映射(常用)
- 14 对于移动类型561和账户xxxxxx Ext. GA本币计的金额(023)的不同的字段
- exe文件解包_如何获取别人微信小程序的源文件?
- 【javascript】基于javascript的小时钟
- 【畅捷通T+Cloud】12.3版本上线啦!
- 费式序列(斐波那契数列)
- win10创建新的计算机用户名和密码,Win10怎么新建账户 Win10创建新用户图文教程...
- MATLAB闪一下打不开问题解决
- 中国菜刀与一句话木马之间的原理分析
- 对五层网络协议体系结构的理解
- 《Linux防火墙(第4版)》——1.5 主机名和IP地址
- linux系统下修改hosts文件的权限
热门文章
- 迪斯尼:我们根本没被黑 整件事实际上是一场骗局
- 迄今为止最全:Oracle WebLogic Server产品版本介绍
- 图像处理之基础---叹为观止的图像处理
- PowerShell_零基础自学课程_9_高级主题:静态类和类的操作
- X3平台制程及工卡开立设计说明
- Gmail priority inbox帮助你减少工作量
- 【连载】【FPGA黑金开发板】NIOS II那些事儿--SDRAM实验(十二)
- 【风格迁移】Neural Style Transfer 神经风格迁移
- 0.42-0.5+0.08与0.08-0.5+0.42是不完全相等,Why is 0.3 - 0.2 - 0.1 (or similar) not equal to zero?
- 【车道线检测与寻迹】2月24日 CVST工具箱模块仿真与图像处理(二)、基于Vision对象的边缘检测、余弦变换压缩,与峰值信噪比