【Godot】解决游戏中的孤立/孤儿节点及分析器性能问题的分析处理

Godot 4.1

因为我在游戏中发现,越运行游戏变得越来越卡,当你使用 Node 节点中的 print_orphan_nodes() 方法打印信息的时候,会出现如下的孤儿节点信息

孤儿节点信息是以 节点实例ID - Stray Node: 节点名称(Type: 节点类型) 作为格式输出,可以多运行几次查看是否节点实例 ID 是否是相同的,通常不是随机性很大的,一般大概率是相同的

确定了有哪些常见或固定的节点实例ID,记录下来,使用 var obj = instance_from_id(节点实例ID) 进行获取记录孤儿节点,然后进行打印信息

复制代码
prints(obj, obj.owner, obj.get_script())

比如我得到了一个固定的节点实例ID,然后我通过一下方式进行获取输出这个节点、场景、脚本信息,来定位确定是在哪个地方出现的问题

复制代码
		var obj = instance_from_id(141431936683)
		if obj:
			prints(obj, obj.owner, obj.get_script())
			if obj.get_script():
				print(obj.get_script().resource_path)

这样排查下来就好找到具体的出现的位置了


后面我又去查看分析器中的性能波动的位置,游戏开始后,打开调试器里的分析器的开始按钮,下图左上角,点过之后变成"停止"按钮。勾选 Frame Time 查看时间耗费比较多的帧,根据这个帧波动的时间来分析。

我发现游戏中开始变卡,一看分析器果然有强烈波动,如下图所示


其中有些位置的耗费时间很高,比如我这里下面的 ScriptFunctions 里一个叫 update_fog 方法耗费挺多性能,所以我在这里入手,进行逐个解决

相关推荐
郝学胜-神的一滴6 小时前
游戏设计:原型与开发 08:我们到底在为谁做游戏
程序人生·游戏·游戏引擎·游戏开发·游戏策划
五仁烧饼7 小时前
动手学 Shader Graph(二):溶解与边缘发光
游戏·unity·shader·shader graph
星马梦缘9 小时前
人工智能学院游戏设计大赛决赛 · 执行提纲
数据库·人工智能·游戏
星马梦缘11 小时前
关于人工智能学院游戏设计大赛决赛的内部分工通知
数据库·人工智能·游戏
郝学胜-神的一滴12 小时前
游戏设计:原型与开发 07:像游戏设计师一样工作
图像处理·游戏·unity·图形渲染·游戏策划·游戏设计
Caroline51613 小时前
GPT Image 2.5 + DeepSeek V4.1 Flash-1017:从游戏 UI 设计到 3D 项目生成
gpt·游戏·ui·ai 编程·gpt image 2.5
乌萨达1 天前
星途天城电脑版怎么玩?星途天城PC版游玩指南
游戏·安卓模拟器·雷电模拟器
x10n92 天前
GRLPackage 游戏运行库合集 一键修复报错
游戏·运行库·游戏报错修复
郝学胜_神的一滴2 天前
游戏设计:原型与开发 06:读懂游戏设计最容易被忽略的文化层
游戏·游戏开发
GoWjw2 天前
RK3288 游戏盒子安卓 5.1 线刷包说明
游戏