Unity3d游戏开发中的AssetsBundle思路与方法运用.docVIP

  • 4
  • 0
  • 约5.89千字
  • 约 10页
  • 2023-09-03 发布于浙江
  • 举报

Unity3d游戏开发中的AssetsBundle思路与方法运用.doc

想要认识Unity3d游戏开发中的AssetsBundle,我们需要先理解几个概念。 二进制文件:AssetsBundle可以将二进制文件直接封装在里面。比如图片和声音和文本信息等。 prefab : prefab可以封装成AssetsBundle。prefab身上含有游戏对象里的物体材质,游戏脚本,组件,动画资源,贴图,等游戏所需要的东西,都封装在一起。当从服务器上将Assetsbundle下载以后直接实例化就可以放入游戏中。这是非常方便的。 场景文件:在我们的游戏工程里,Scene视图里会包含我们需要游戏的所有游戏对象,我们也可以把整个场景封装在AssetsBundle中。需要说明的是,它不能在移动平台上用。因为移动平台上不能更新脚本的。简单的说来,就是在移动平台上,即使下载了AssetsBundle,脚本也不会执行。 移动平台:因为在移动平台脚本不能更新,所以开发者无法绕过App store和google play这种在线商店升级应用程序。唯一能做到的就是更新资源。例如,在我们的游戏版本号,在处理版本升级的时候,有大版本号和小版本号。大版本号主要是升级游戏脚本,需要在AppStore中更新,如4.0,5.0这都属于大版本号。小版本号是如4.1.2,5.0.2这种只是更新游戏中的资源,通过自己游戏的服各器就可以完成。通过AssetsBundle在自己服务器上下载,然后适应在游戏中。如果非要更新脚本信息,必须要更新脚本那么只能在AppStore或者googlePlay去更新大版本。 移动平台上绑定脚本处理:移动平台上不能更新脚本,对于prefab上绑定的脚本,程序通过服务器下载这个AssetsBundle,载入到工程中这个绑定的脚本是不会被执行的。但是对于如果本地工程有这个被绑定的脚本,那么unity会自动将这条脚本绑定在下载的prefab中,并且他们执行的非常好。需要注意的是,有时我们会在脚本中写一些public 变量,有可能不同的prefab上,有可能不同的Prefab上绑定的是相同的脚本,只是Inspector 脚本中的public参数不同。别担心这一点Assetbundle中的Prefab也是没问题,所以说只要大版本中的脚本没问题,在小版本中只更新游戏资源是一点问题都么有的。 移动优化:之前我们说过可以将游戏中的某个游戏对象封装成Assetbundle,也可以将游戏中的整个场景也封装成Assetbundle。但是我认为需要巧妙的使用封装场景,因为场景中肯定有很多公用的模型,如果打包场景的话那么内存与size就是公用模型的size * N个场景,想想其实挺恐怖的。其实我们可以巧妙的使用,首先把场景中公用的部分和私有的部分统统放入Unity,然后烘培整个场景。当场景烘培完毕后把公用的模型部分在拿出去,场景只只保留私有的模型。还可以做一个工具将公用模型在场景中的坐标保存在XML中(每个场景文件会对应一个公用模型的XML信息),最后在将公用的模型分别封装在别的Assetbundle中。 服务器上提供每个场景的Assetbundle,和公用模型的Assetbundle,一般公用模型的Assetbundle可以放在常驻内存中(可能使用频繁、根据项目的不同而定)场景Assetbundle下载完毕后,现载入场景然后在根据场景对应的XML信息将公用模型部分动态的在添加到场景中,这样就完成了一个场景的构建。 在理解了上面的几个概念之后,我们来时行项目制作。 首先,我们先创建一个场景,如下图,场景中有模型有脚本。选中两个模型的prefab,并在模型上添加两个相应的脚本,我们为了印证脚本的运行,运行的时候打印一串字符串。 添加在模型身上的脚本如下: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 usingUnityEngine; usingSystem.Collections; publicclassScript:MonoBehaviour { publicstringname; voidAwake() { Debug.Log(mynameis+name); } } 我们先创建AssetsBundle,在Project---Assets---Editor文件下创建脚本 usingUnityEngine; usingSystem.Collections; usingUnityEditor; publicclas

文档评论(0)

1亿VIP精品文档

相关文档