Unity3D 游戏开发构架篇 —— 动态大场景生成 = 区域加载+对象池管理
2014-07-09 21:39
585 查看
项目做一个类似无尽模式的场景,想了一想,其实方法很简单,做一个相关的总结。
主要先谈一谈构架,后期附上代码。
一、区域加载
其实无尽场景的实现很简单,因为屏幕限制,那么不论何时何地,我们只能看到自己的那一块,所以我们只需要加载出人物附近的场景,随着人物的移动,我们进行场景的变化,如果这些变换具有一定随机性,那么无尽场景的加载也就随之实现了。
如下图所示:
二、对象池介绍
其实这个概念并不新鲜,在java里面有这种概念的实例,比如数据库连接池等等,如果你需要多次数的使用一个预设,那么反复 Instatiate Destory 一个预设在性能上消耗过大,不如把这个用对象池托管,这样一来性能上好了不少。唯一的缺点就是在放入对象池的时候,如果你在使用的过程中有一些改变,比如物体的状态,物体被别的东西管理了,比如你的生成一些Wall,被一个Ice_List管理,那么你就要在回收的时候考虑一下ReSet,在Ice_List中回收。
(注意,资源池生成的时候,会先生成一些物体放入池子中,这些物体生成的时候也被Ice_List管理,放入的时候也需要回收。)
三、整体框架
对象池解决物体的生成性能问题
控制器专门控制生成物体
单例脚本实现各个生成物体之间的数据交互
差不多就这些。
主要先谈一谈构架,后期附上代码。
一、区域加载
其实无尽场景的实现很简单,因为屏幕限制,那么不论何时何地,我们只能看到自己的那一块,所以我们只需要加载出人物附近的场景,随着人物的移动,我们进行场景的变化,如果这些变换具有一定随机性,那么无尽场景的加载也就随之实现了。
如下图所示:
二、对象池介绍
其实这个概念并不新鲜,在java里面有这种概念的实例,比如数据库连接池等等,如果你需要多次数的使用一个预设,那么反复 Instatiate Destory 一个预设在性能上消耗过大,不如把这个用对象池托管,这样一来性能上好了不少。唯一的缺点就是在放入对象池的时候,如果你在使用的过程中有一些改变,比如物体的状态,物体被别的东西管理了,比如你的生成一些Wall,被一个Ice_List管理,那么你就要在回收的时候考虑一下ReSet,在Ice_List中回收。
(注意,资源池生成的时候,会先生成一些物体放入池子中,这些物体生成的时候也被Ice_List管理,放入的时候也需要回收。)
三、整体框架
对象池解决物体的生成性能问题
控制器专门控制生成物体
单例脚本实现各个生成物体之间的数据交互
差不多就这些。
相关文章推荐
- Unity3D——异步加载游戏场景loading界面的开发!
- Unity3D独立游戏开发日记(一):动态生成树木
- 【Unity3D 打斗游戏开发】之二 异步加载场景
- 【Unity3D游戏开发】NGUI之渐变加载到100%的Loading场景进度条 (一)
- Unity3D——异步加载游戏场景loading界面的开发
- 在Unity3D的网络游戏中实现资源动态加载
- C#开发WPF/Silverlight动画及游戏系列教程(Game Tutorial):(三十七)地图自适应区域加载
- unity基础开发----Unity3D的uniSWF插件动态加载SWF UI资源
- 在Unity3D的网络游戏中实现资源动态加载
- Unity3D AssetBundles 动态加载游戏资源
- unity3d 异步加载场景和游戏对象
- [3D游戏开发]场景管理(转)
- 在Unity3D的网络游戏中实现资源动态加载
- (转)Unity3D研究院之异步加载游戏场景与异步加载游戏资源进度条(三十一)
- ]Unity3D实现动态加载游戏资源(转)
- 在Unity3D的网络游戏中实现资源动态加载
- 在Unity3D的网络游戏中实现资源动态加载
- android游戏开发框架libgdx的使用(十八)—资源加载管理AssetManager的使用
- Unity3D AssetBundles 动态加载游戏资源
- [3D游戏开发]场景管理