V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
UNITY: Game Development Tool
License Comparisons
huzhikuizainali
V2EX  ›  UNITY

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

  •  
  •   huzhikuizainali · 147 天前 · 911 次点击
    这是一个创建于 147 天前的主题,其中的信息可能已经有所发展或是发生改变。

    背景资料,我与 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 提到的“求解谜题” “撤销操作” 分别对应什么游戏场景?能举个例子么?为什么这些场景需要用到“栈”?

    6 条回复
    frankmdong
        1
    frankmdong  
       147 天前
    寻路算法通常和你游戏玩法相关,比如你要做一个自走棋,那棋子就只能在正方形网格里面走。文明是六边形的网格地图。还有 rts 例如战锤那种,圈一堆兵然后到达某个地点,还要求队伍里的兵尽可能的不重叠,这些都不是直接用 navmesh 解决的,可能要自己改改 astar 或者找别的算法。
    谜题的话,可以尝试用回溯解数独。
    撤销的话就类似你编辑器的操作删完一个 gameobject 后悔了,ctrl+z 撤销删除。游戏里的话《程序员升职记》不也有“撤销”相关的操作吗,或者“悔棋”功能?
    UI 管理的话你也可以用栈,打开了一堆 UI 之后,点关闭就关闭最后打开的 UI 。
    huzhikuizainali
        2
    huzhikuizainali  
    OP
       147 天前
    @frankmdong 比如星际争霸圈一堆兵,让他们进攻敌人基地。鼠标给出目的地以后这些兵要自己寻最短路径过去。这些寻路算法 Unity 已经做好了吧?不需要 C#程序员在去想算法,也不用自己用栈来实现了吧?
    frankmdong
        3
    frankmdong  
       147 天前
    @huzhikuizainali 可以用,这个具体要自己看场景测性能,如果 Unity 真的做好的话,asset store 也不会有一堆 pathfinding 插件卖了
    huzhikuizainali
        4
    huzhikuizainali  
    OP
       147 天前
    @frankmdong 谢谢回复。
    那你们实际工作中是自己开发寻路系统?开发过程中会用到栈么?
    nightwitch
        5
    nightwitch  
       147 天前
    栈在游戏开发里太常用了..
    基本所有引擎里的场景组织结构都是树状的...要搜索某个组件往往要深搜,这里就要用到栈了。做编辑器工具很常见,要找某些组件改点什么属性之类的
    huzhikuizainali
        6
    huzhikuizainali  
    OP
       147 天前
    @nightwitch 谢谢回复!
    请问你说的场景组织结构,组件是什么?可否从产品的角度举个具体的例子。比如王者荣耀或者星际争霸或者暗黑破坏神……
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2596 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 30ms · UTC 06:29 · PVG 14:29 · LAX 22:29 · JFK 01:29
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.