3d网页游戏场景打包与加载
来源:互联网 发布:c语言分解质因数 编辑:程序博客网 时间:2024/06/11 05:35
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
当然这适用于场景中的模型有重用的现象
原文链接:http://www.cnblogs.com/oldman/articles/2453981.html
我们知道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
当然这适用于场景中的模型有重用的现象
原文链接:http://www.cnblogs.com/oldman/articles/2453981.html
0 0
- 【Unity3d】3d网页游戏场景打包与加载
- 3d网页游戏场景打包与加载
- 3d网页游戏场景打包与加载
- 3D游戏场景中 无限大地图 加载与效率优化思路
- Unity3d 场景打包与加载
- 异步加载游戏场景与异步加载游戏资源进度条
- 网页游戏3D技术
- Unity 3D网页游戏与flash网页游戏的较量
- Unity 3D网页游戏与flash网页游戏的较量
- 3D游戏场景数据的组织
- Unity 3D酷跑类游戏场景循环
- unity 3D游戏场景转换
- 3D游戏场景管理概述
- 【Unity 3D 游戏引擎】建立3D场景
- 3D游戏引擎中的室外大场景渲染技术研究与实现
- 3D游戏引擎中的室外大场景渲染技术研究与实现
- 【译U3D】官方坦克3D游戏制作1-物体与场景搭建
- Silverlight.XNA(C#)跨平台3D游戏研发手记:(十)3D 场景与控制设计①
- 关键字和随机数加抽奖系统
- Android Studio Experimental Gradle Plugin User Guide
- 男生的长相到底有多重要?
- HDOJ 2818 Building Block
- 清除Chrome缓存
- 3d网页游戏场景打包与加载
- VIM查看文件编码 文件编码格式转换 文件名编码转换
- CF 335 div.1-B/div.2-D/605 B Lazy Student
- Hadoop管理员的十个最佳实践
- Web app和native app之争_20151215
- HDOJ 1272 小希的迷宫
- linux 问题处理
- 命令行自动提升管理员权限
- HDOJ 1856 More is better