当我用 Unity 开发游戏的时候有什么场景下要使用“栈”操作?

168 天前
 huzhikuizainali

背景资料,我与 ChatGpt 的两轮问答:

我问:“当我用 unity+C#开发一款游戏,在什么场景下需要我“显式”的使用“栈”?”

ChatGpt: Unity 游戏开发中的使用场景 1 、深度优先搜索( DFS )和迷宫生成:在需要遍历图形结构、树结构或生成迷宫时,深度优先搜索算法可以使用栈来管理节点的访问顺序。

2 、回溯算法:在处理需要回溯的算法,如求解谜题、路径查找等,可以使用栈来保存状态信息。

3 、撤销操作:在游戏中实现撤销/重做功能,可以使用栈来保存状态快照。

我问:你提到游戏开发中涉及“深度优先搜索( DFS )和迷宫生成”。这些问题难道 Unity 还没有解决么?还需要 C#程序员自己用栈来实现么?

ChatGpt:Unity 提供了强大的工具和组件来简化游戏开发,但有些特定的算法和逻辑需要开发者自己实现,尤其是当涉及到游戏的核心玩法设计和特定的算法需求时。深度优先搜索( DFS )和迷宫生成就是这样的例子。尽管 Unity 提供了一些基础功能,但具体的算法实现通常需要开发者根据需求自行编写。以下是一些需要开发者使用栈来实现的场景:

深度优先搜索( DFS ) DFS 是一种常用的图遍历算法,特别适用于以下场景:

1 、路径查找:虽然 Unity 提供了 NavMesh 进行路径查找,但在某些自定义图形结构(如自定义的迷宫或节点网格)中,开发者可能需要自行实现路径查找算法。

2 、游戏逻辑:在实现复杂的游戏逻辑时,如 AI 决策树、任务树等,DFS 可以帮助遍历和处理这些树状结构。

迷宫生成 迷宫生成是一个常见的游戏功能,特别是在随机生成游戏世界或关卡时。以下是一些迷宫生成算法:

1 、深度优先搜索生成迷宫:这种算法可以生成完全随机的迷宫。通过使用栈来跟踪路径,可以实现迷宫的生成。

2 、Prim's 算法:这是一种基于最小生成树的迷宫生成算法,也可以通过栈来实现。


我的问题:

1 、请各位老师看看 Chatgpt 第二轮回答是对的?还是在进行无意义的重复?像迷宫和路径查找这样的游戏中典型场景真的还需要 C#程序员用算法手动实现么? Unity 真的还没有做好让 C#程序员直接调用的方法或函数?

2 、游戏我玩过,但是 Gpt 提到的“求解谜题” “撤销操作” 分别对应什么游戏场景?能举个例子么?为什么这些场景需要用到“栈”?

980 次点击
所在节点    UNITY
6 条回复
frankmdong
168 天前
寻路算法通常和你游戏玩法相关,比如你要做一个自走棋,那棋子就只能在正方形网格里面走。文明是六边形的网格地图。还有 rts 例如战锤那种,圈一堆兵然后到达某个地点,还要求队伍里的兵尽可能的不重叠,这些都不是直接用 navmesh 解决的,可能要自己改改 astar 或者找别的算法。
谜题的话,可以尝试用回溯解数独。
撤销的话就类似你编辑器的操作删完一个 gameobject 后悔了,ctrl+z 撤销删除。游戏里的话《程序员升职记》不也有“撤销”相关的操作吗,或者“悔棋”功能?
UI 管理的话你也可以用栈,打开了一堆 UI 之后,点关闭就关闭最后打开的 UI 。
huzhikuizainali
168 天前
@frankmdong 比如星际争霸圈一堆兵,让他们进攻敌人基地。鼠标给出目的地以后这些兵要自己寻最短路径过去。这些寻路算法 Unity 已经做好了吧?不需要 C#程序员在去想算法,也不用自己用栈来实现了吧?
frankmdong
168 天前
@huzhikuizainali 可以用,这个具体要自己看场景测性能,如果 Unity 真的做好的话,asset store 也不会有一堆 pathfinding 插件卖了
huzhikuizainali
168 天前
@frankmdong 谢谢回复。
那你们实际工作中是自己开发寻路系统?开发过程中会用到栈么?
nightwitch
167 天前
栈在游戏开发里太常用了..
基本所有引擎里的场景组织结构都是树状的...要搜索某个组件往往要深搜,这里就要用到栈了。做编辑器工具很常见,要找某些组件改点什么属性之类的
huzhikuizainali
167 天前
@nightwitch 谢谢回复!
请问你说的场景组织结构,组件是什么?可否从产品的角度举个具体的例子。比如王者荣耀或者星际争霸或者暗黑破坏神……

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1055293

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX