【Unity3d】3d网页游戏场景打包与加载
http://www.cnblogs.com/dosomething/archive/2012/04/07/2436353.html
3d游戏中 一个场景往往比较大 如果游戏的进行需要下载一个10M甚至更大的场景时 加载所用的时间会导致很大部分玩家的流失
我们知道unity3d中的内置地形是使用一张高度图 加载场景时 首先加载地形并显示 再去加载场景中的部件(比如树、房子等) 将会很有必要
在加载场景中的部件时 可以根据玩家当前所在的位置 由近到远的去加载
场景中的每个部件实际上并不都是独一无二的
比如一棵一模一样的树 可能同一个场景中出现在很多地方 不同的只是树的位置信息
那么在加载场景的时候则只需要加载一个树的模型 并记录下N个树的transform信息 将会大大的减少场景所占的空间
如果模型的重用率较高 那么这个问题的解决将会成倍的减少一个场景所占的空间
场景在加载时 也只需要下载一个树的模型 并根据transform信息 在指定的位置复制出N棵树即可
在使用unity3d的BuildPipeline进行打包之前 需要遍历一边所选文件夹下的场景文件
如果文件的MeshFilter的Mesh为在该文件夹中只出现了一次 则说明该模型在场景中没有重复 则记录下该模型文件的transform信息 并打包
如果该Mesh出现的次数大于一次 则记录下这些和该Mesh相同的模型的transform信息 打包时包含一个模型和多个transform信息
在unity3d中有个名为ScriptableObject的类 可以利用它来存储自己所需的各种各样的资源

public class TransformHolder : ScriptableObject
{
public int Length;
public Vector3[] position;
public Quaternion[] eulerAngles;
public Vector3[] localScale;
}

这样一来 每一个资源包中都包含一个模型和一个TransformHolder类型的文件
TransformHolder的Length若为1 则说明该模型在场景中只出现了一次
若大于1 则可以根据记录的transform信息循环生成多个
原先有几百个资源包 大小有十几兆的场景
用该方法后 变成了二十多个资源包 大小减少到不足2M
当然这适用于场景中的模型有重用的现象
【Unity3d】3d网页游戏场景打包与加载的更多相关文章
- Unity3D研究院之异步加载游戏场景与异步加载游戏资源进度条
Unity3D研究院之异步加载游戏场景与异步加载游戏资源进度条 异步任务相信大家应该不会陌生,那么本章内容MOMO将带领大家学习Unity中的一些异步任务.在同步加载游戏场景的时候通常会使用方法 Ap ...
- (转)Unity3D研究院之异步加载游戏场景与异步加载游戏资源进度条(三十一)
异步任务相信大家应该不会陌生,那么本章内容MOMO将带领大家学习Unity中的一些异步任务.在同步加载游戏场景的时候通常会使用方法 Application.LoadLevel(“yourScene ...
- (转)Unity3D研究院之异步加载游戏场景与异步加载游戏资源进度条(三十一)
http://www.xuanyusong.com/archives/1427 异步任务相信大家应该不会陌生,那么本章内容MOMO将带领大家学习Unity中的一些异步任务.在同步加载游戏场景的时候通 ...
- [Unity] unity5.3 assetbundle打包及加载
Unity5.3更新了assetbundle的打包和加载api,下面简单介绍使用方法及示例代码. 在Unity中选中一个prefab查看Inspector窗口,有两个位置可以进行assetbundle ...
- imagesLoaded – 检测网页中的图片是否加载
imagesLoaded 是一个用于来检测网页中的图片是否载入完成的 JavaScript 工具库.支持回调的获取图片加载的进度,还可以绑定自定义事件.可以结合 jQuery.RequireJS 使用 ...
- seo网页加速技术,预加载 DNS Prefetching 详解
seo网页加速技术,预加载 DNS Prefetching 详解 DNS Prefetching 是什么 : DNS 是什么-- Domain Name System,域名系统,作为域名和IP地址相互 ...
- 解决网页中Waiting (TTFB)数据加载过慢的问题
解决网页中Waiting (TTFB)数据加载过慢的问题 最近做了一个网页,在本地测试良好,数据可以得到很快的反馈,但是当部署到云端Linux上时候,就会出现加载缓慢的问题.本地测试,得到数据大概3s ...
- 我的Android进阶之旅------>Android疯狂连连看游戏的实现之加载界面图片和实现游戏Activity(四)
正如在<我的Android进阶之旅------>Android疯狂连连看游戏的实现之状态数据模型(三)>一文中看到的,在AbstractBoard的代码中,当程序需要创建N个Piec ...
- Unity3d 5.x AssetBundle打包与加载
1.AssetBundle打包 unity 5.x版本AssetBundle打包,只需要设置好AssetBundle的名称后,unity会自动将其打包,无需处理其他,唯独需要做的是设置好个AssetB ...
随机推荐
- 什么时候用IntentService
IntentService是继承自Service类的,在执行耗时操作时,其实,只需要在service中的onStartCommand(主线程)新启一个线程即可,那IntentService什么时候用来 ...
- OSG3.40 编译时,无法打开输入文件“optimized.lib”
解决方案: 正常情况下,下图中会多出一项:ZLIB_LIBRARY_RELEASE,之后屡次编译,都提示"无法打开输入文件"optimized.lib"" 因为 ...
- [LeetCode] Factor Combinations 因子组合
Numbers can be regarded as product of its factors. For example, 8 = 2 x 2 x 2; = 2 x 4. Write a func ...
- ant windows环境配置
详见如下链接,小蚂蚁builder.xml--apache-ant的配置 http://blog.csdn.net/gaohuanjie/article/details/40142687
- android studio 使用jar包,arr包和怎么使用githup开源项目中的aar包或module
我这里的android studio的版本是2.2.3版本 一.现在大家都用android studio了,就有人问怎么使用jar包 其实使用jar包比较简单 直接吧jar放入工程的app目录下的li ...
- C#操作图片帮助类
using System; using System.Collections; using System.IO; using System.Drawing; using System.Drawing. ...
- Office2016打开doc字符间距过小
缺少字体.........装上就行,放到windows/fonts目录下,自动安装了
- Beta阶段第六次Scrum Meeting
情况简述 BETA阶段第六次Scrum Meeting 敏捷开发起始时间 2016/12/16 00:00 敏捷开发终止时间 2016/12/17 00:00 会议基本内容摘要 平稳推进 参与讨论人员 ...
- Android 热修复方案Tinker
转自:http://blog.csdn.net/l2show/article/details/53925543 Android 热修复方案Tinker(一) Application改造 Android ...
- nodejs querystring参数处理
在node js z中,用querystring来进行客户端与服务器的数据交换时序列化数据,是数据处理的小利器. 如:在node中执行这个命令:querystring.stringify({numbe ...