自动组织/智能库存系统?
在过去的一周中,我一直在使用Unity3D开发清单系统。最初,我在Design3的工作人员那里得到了帮助,但是直到我们分离路径才花了很短的时间,因为我真的不喜欢他们编写代码的方式,它完全没有OOP的味道。 我向前迈出了进一步的一步-物品占用多个插槽,先进的放置系统(物品会尽力找到最合适的位置),本地鼠标系统(鼠标被困在活动行李袋中)等。 这是我工作的演示。 我们希望在游戏中拥有一种自动组织功能-而不是自动排序。我们需要此功能,因为我们的库存将是“实时”的-不同于《生化危机1,2,3》等,您可以在其中暂停游戏并在库存中执行操作。现在想象一下,您的自我处于僵尸包围的稠密情况下,没有子弹,环顾四周,发现地面上附近有子弹,因此您去追捕它们并尝试将其捡起,但是它们却没有不适合!您查看您的库存,发现如果您重新组织一些物品,它将很合适!-现在的玩家-在那种情况下没有时间重组,因为他被僵尸包围了,如果他停下来并组织库存以腾出空间(实时记住库存,没有暂停),他会死掉的- 自动执行该操作会很好吗?-是的! (我相信这已经在《地牢围攻》之类的某些游戏中实现了,因此请确保它是可行的) 例如看这张照片: 是的,因此,如果您对问题进行自动排序,则会得到空格,但是这很糟糕,因为:1-昂贵:不需要完全排序操作即可释放这些空格,在第一张图片中,只需将红色项目滑到底部到最左边,您会得到与自动排序相同的空间。2-播放器很烦人:“ F告诉你重新订购我的东西吗?” 我不是在问“如何编写代码”,我只是在问一些指导,在哪里看,涉及什么算法?这和图和最短路径有关吗?我希望不要因为我没有设法继续我的大学学习而已:/即使是这样,只要告诉我,我就会学到相关的知识。 请注意,可能有不止一种解决方案。因此,我想我要做的第一件事就是弄清楚情况是否“可以解决”-如果我知道如何确定情况是否可以解决,那么我可以“解决”它。我只需要知道使其“可解决”的条件即可。而且我相信必须有一些算法/数据结构。 这是一张试图容纳1x3物品的多种解决方案的照片: 箭头仅显示一种解决方案,但是如果您看到的话,会发现多个解决方案。这就是我最终不自动排序而是找到解决方案并应用它的原因。 请注意,如果我花时间在上面,我会想出一种解决方法,但这并不是最好的方法,就像用脚而不是手握住车轮一样!XD或就像尝试解决需要数组的问题一样,但是您还不知道它们的存在!那么什么是正确的方法呢? 评论更新 @Stephen我真的不是Alogs中的专家,您提到了“背包”和@BlueRaja-Danny Pflughoeft提到了2D装箱算法。他们之间有某种联系/相同吗?-我仍然对应该如何处理感到困惑。 是的,我已经在使用“启发式”,但是我真的不知道我是:D它找到第一个可用的插槽,然后查看该项目是否适合该插槽。 我不知道是否可以根据商品的“体积”(我称为nSlotsRequired = nRowsReq * nColsRec)订购商品,因为例如您有一个2x2和1x4的商品,它们的体积相同,但是形状不同,对接下来的其余项目的处理方式会产生不同的影响。所以...:/ 我看了这个视频,我真的很喜欢完整的打包想法,但是我想知道如何处理它,因为库存是2D的。我什至不能确定垃圾箱的包装是这里的关键,因为,确实可以有一个以上的袋子,但是在我们的游戏中,它只能是一个袋子。因此,仅需在“一个”袋子中放入物品即可。因此,该视频中的示例(管道和总线)与我的问题并不完全匹配。还看了一些关于背包的事情,我没有看到“价值”与我的物品/库存有何关系,但我猜“重量”与体积大是一样的,不确定。