AssetBundle

Unity教程之-Unity3d打包Assetbundle并加载

 

本篇Unity3d教程我们继续学习下如何制作利用AssetBundle来打包制作我们的数据文件,并在游戏中读取AssetBundle数据文件
由于我们要将模型资源放在远程的服务器端,但如果直接放fbx模型是不可以加载的,所以我们可以将fbx做成预设或者是直接将其打包成assetbundle格式的,然后通过www来加载获取。
说下使用方法:

1、把附件脚本放到工程文件夹下的…\Assets\Editor文件夹下。

2、在工程的Project视图里点击想要保存的资源,网络上推荐的是Prefab,右键点击,选择菜单里最下面的两个选项任意一个都可以,第一个选项对应的自定义属性有一个过期了,但是不影响使用。

3、指定文件的构建路径和文件后缀,后缀无所谓。

4、推荐制造做法:

任何形式的资源都可以,包括集合资源,比如创建一个空的GameObject,把所有想要关联的其他GameObject都拖进去,然后在project视图里创建一个prefab,将这个集合资源GameObject拖进去作为一个prefab。执行上面的第2、3步骤。 More

Unity教程之-Unity3d游戏开发之Lua与游戏的不解之缘终结篇:UniLua热更新完全解读

 

在之前的三篇系列文章《Unity3D游戏开发之Lua与游戏的不解之缘》中,博主带领大家一起领略了Lua在游戏开发中强大而迷人的作用,通过UniLua这个开源项目我们将Lua引入了Unity3D的世界,并且在此基础上我们写出了Lua’与Unity3D交互的第一个示例程序。今天呢,我们来说说Unity3D配合AssetBundle和;Lua实现热更新。

首先,我们来了解一下什么是热更新吧!所谓热更新是指在不停机的状态下对系统进行更改,例如我们的Windows可以在不重启的状态下完成补丁的更新、Web服务器在 不重启的前提下完成对数据和文件的替换等都是热更新的经典实例。那么对于Unity3D而言,什么是热更新呢?如果我们最终发布的Unity3D游戏是一个Web游戏,那么每次游戏加载的过程中实现对资源代码的更新就是热更新。如果我们最终发布的Unity3D游戏是一个客户端游戏,那么我们在重重启客户端以后实现对资源代码的更新就是热更新。为什么这么说呢?因为Web游戏需要保证玩家能够及时快速地进入游戏,因此在游戏加载完之前,我们必须完成对游戏资源和代码的更新。可是对于客户端游戏而言,玩家可以在等待本次更新结束后再进入游戏,而且大部分的客户端程序在更新完后都会要求玩家重启客户端,所以对于客户端游戏而言,热更新并非是严格意义上的热更新。那么,我们为什么要进行热更新呢?答案是为了缩短用户获取新版本客户端的流程、改进用户体验。这其实就是博主在前文中提到的传统单机游戏依靠光盘载体进行发售所面临的问题,玩家为了获取最新版本的游戏,需要下载全新的客户端并将它安装到计算机或者手机设备上。在互联网产品开发中有一种称为快速迭代的理念,试想如果我们每次对客户端进行局部的调整,就需要玩家去下载新版本的客户端,试问这样的用户体验真得能让用户满意吗?所以现在为了方便用户、留住用户、进而从留住的用户身上赚到钱,我们总能在游戏产品中找到热更新的影子。我们知道在Unity3D中可以通过AssetBundle来实现对游戏中资源的更新,在Unity教程之-Unity游戏更新策略探讨 这篇文章中已经给出了较为完美地解决方案,因为博主使用的Unity3D免费版无法使用AssetBundle的功能,而博主本人不愿意使用破解版,因为这是一个程序员的良心,所以本文更多的是从代码更新的这个角度来讲Unity3D的热更新,好了,下面正式开始Unity3D代码级的热更新之旅! More

Unity教程之-Unity游戏更新策略探讨

 

上一次我们学习了如何将资源进行打包成AssetBundel。这次就可以用上场了,我们来探讨一下手游资源的增量更新策略。注意哦,只是资源哦。关于代码的更新,我们稍后再来研究。理论上这个方案可以使用各种静态资源的更新,不仅仅是assetbundle打包的。


  • 原理

现在的手游安装有几种方式。一种是安装的时候就把程序和资源安装到本地。另外一种是只安装程序和少量的必要资源,然后在启动的时候再把缺少的资源下载完整。手游一般不建议和传统页游一样,在运行过程中加载资源,那样做会导致用户体验会比较差些。上述的两种安装模式,在更新资源上本质都是相同的。都是比较服务器资源的版本和本地资源的版本,以确定哪些资源要下载(包括需要更新的和新增的)。 More

Unity教程之-Unity资源打包Assetbundle

 

在手游的运营过程中,更新资源是比不可少的。资源管理第一步是资源打包。传统的打包可以将所有物件制成预设Prefab,打包成场景。今天我们来一起学习官方推荐的Assetbundle,它是Unity(Pro)提供的资源打包策略。利用AssetBundle,可以将几乎所有的资源都打包封装,便于客户端更新下载新的资源,本节unity教程我们来学习下如何将Unity资源打包成Assetbundle

  • 创建AssetBundle

1.创建一个空的Prefab,命名Cube,然后创建一个Cube,将其拉到刚创建好的Prefab
2.新建一个脚本ExportAssetBundles.cs(代码来自官方文档),保存在Asset/Editor目录下 More

Unity教程之-Unity3d C# HttpWebRequest异步下载文件

 

本篇unity教程我们来学习下载unity中文件下载,通过unity自身www类下载文件我们就不多说了,现在我们来学习下利用HttpWebRequest异步下载文件一下通过一个例子,来使用HttpWebRequest异步下载一个ZIP文件。废话不说,贴上代码 More

Unity教程之-Unity3d反编译AssetBundle提取游戏资源

 

今天我们来说说通过反编译Unity3D的AssetBundle来提取游戏资源,博主写这篇文章的目的并非是要教大家如何去破解一款基于Unity3D引擎开发的游戏,而是想通过今天这篇文章来告诉大家如何在开发Unity3D游戏的过程中保护自己的游戏资源。

漫话Unity3D的AssetBundle

对于AssetBundle,其实博主是在以前的文章中是有提到的。不知道大家还记不记得,博主曾经在写游戏开发和Lua的不解之缘这个系列文章的时候,提到并且使用过AssetBundle这种技术。具体来说呢,AssetBundle在Unity3D中是一种用于资源打包盒资源动态加载的解决方法,比如我们平时玩的单机游戏容量一般都比较大,这是因为制作人员在制作游戏的时候将所有的项目资源都整合到了一起。可是如果我们用AssetBundle来做这个游戏的话,我们就可以只在发布的游戏中提供支持游戏功能的核心部分,而将游戏当中的场景、模型等资源以AssetBundle的形式打包然后放到服务器上,这样当游戏客户端处于联网的时候就可以从服务器上下载这些资源,从而实现游戏资源的动态加载,由此可见AssetBundle可以帮助我们减少游戏的容量。如果是在需要安装包的场合下,那么游戏包容量的大小无疑会为游戏加些印象分。

为什么这幅图总让我想起仙剑四里四人在即墨那晚的时光呢?为什么这幅图总让我想起仙剑四里四人在即墨那晚的时光呢? More