- 4
- 0
- 约5.89千字
- 约 10页
- 2023-09-03 发布于浙江
- 举报
想要认识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)