个人技术总结——Unity-C#实现随机房间生成类的设计

xus____ xus____ 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区

技术概述

在游戏中经常需要随机生成一些环境、资源,学习该技术可以更加方便地去控制随机生成变量。技术难点在于,随机生成需要很强的扩展性,才能面对需求的变化。

技术详述

是抽象出房间的概念:多种房间继承自Room,每个房间这样就可以有更多不同的自己的物体,比如休息房间可以再增加休息点、怪物生成房间可以有怪物生成点。这步产生房间层次类。

控制生成环境变量:在编码前需要确定各种随机生成后的房间的特征,比如是图状还是树状,从多个点生成还是从一个点生成。我们这次项目为从一个点开始生成树状地图,采用深度优先的方式生成。这步产生生成过程类。

控制房间不重叠:使用一个栈记录房间生成过的位置,在生成过程中去探寻各个方向还有没有位置可以生成,如果没有则返回False代表生成失败。这步也为生成过程类的内容

工厂模式+创建者模式结合:有一个单独的函数通过传入参数来控制房间生成,工厂模式:房间类别,创建者模式:房间位置、房间信息(门的开口)。可以在设置完所有房间的信息后统一生成,也可以分开在游戏进行过程中动态生成。这步产生工厂+创建者混合类。

房间信息保存与查询:将房间信息通过链表保存起来,方便后续需求变化来的时候修改。这步产生地图信息类。

关卡管理:再房间生成之后可能需要再生成不同的关卡,通过关卡管理类来分别管理。

总结

随机房间生成系统可以分为:房间层次类、工厂+创建者混合类、生成过程类、地图信息类、关卡管理类。

简易类图表达:

 

...全文

相关推荐

评论 1
收藏 已收藏
分享
返回顶部