如何在Unity中删除或增加最大递归深度?

问题描述 投票:0回答:1

所以我正在创建一个类似于喷气背包兜风的游戏,其中子弹向下发射,同时按住“跳跃”。玩了一小段时间后,我在控制台中遇到以下问题:

“StackOverflowException:已超过最大递归深度 100。考虑增加 'Recursion.defaultMaxDepth'。”

我猜测这是因为场景中的子弹数量已超过 100,但我不知道如何消除此限制。子弹在碰撞后会被摧毁,我喜欢目前的射速。

我的玩家跳跃功能的可视化脚本,在跳跃时每帧都会生成子弹: Visual script for my player jump function that spawns in bullets every frame while jump is held

可视化脚本显示碰撞后的脚本: Visual script showing the script after collision

任何帮助以及有关如何改进我的可视化脚本的任何提示都将不胜感激!

unity-game-engine recursion
1个回答
0
投票

您的错误与屏幕上的项目符号数量无关,而与函数本身调用的次数有关。通常,当函数重复调用自身而没有在任何时候中断时,会调用此函数。以编程方式实现:

void functionName()
{
    // Do Something
    functionName()
}

最终会抛出同样的错误。大多数代码编译器对一段代码在抛出此错误之前可以调用自身的次数有限制,在您的情况下它说是 100。因此,如果您使用上面的代码(忽略它不可视),它会抛出当它第 100 次调用自身时出现错误。

理想情况下,您不希望删除该限制,因为这可能会在以后引起问题。您想要找到代码的递归位置,并检查它是否会迅速失控。在你的屏幕截图中有点难以阅读,但我看不到任何递归实例。值得检查您的其他一些脚本,看看是否有其他地方可能会重复调用自身。

© www.soinside.com 2019 - 2024. All rights reserved.