3d网页游戏场景打包与加载
来源:互联网 发布:淘宝点击转人工服务 编辑:程序博客网 时间:2024/06/02 18:15
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网页游戏场景打包与加载
- 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 Activity生命周期
- supermeobolg
- jquery 实现窗口的最大化
- java中使用ScheduledThreadPoolExecutor实现定时任务
- 计算机应用
- 3d网页游戏场景打包与加载
- 各种排序算法比较:时间复杂度,空间复杂度
- Java基础学习笔记_内部类
- linux进程解析--进程的退出及销毁
- 北京年底前出台分区域分时段限行政策
- * cannot be resolved to a type/variable
- 在linux 下编译c程序时“ error:dereferencing pointer to incomplete type”的问题
- 查找-顺序,有序表
- 队列