【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 方法耗费挺多性能,所以我在这里入手,进行逐个解决

相关推荐
皮皮虾123414 小时前
诛仙手游多开最多几开?用什么云手机比较好?
游戏·智能手机
资源分享助手16 小时前
三网H5小游戏夜市餐厅搭建教程、H5游戏服务端、Win服务端部署
游戏
码农阿豪16 小时前
Docker 部署 XiuXianGame 文字修仙游戏:极空间 NAS 上随时挂机刷资源
游戏·docker·容器
谙弆悕博士17 小时前
【附C语言源码】从零实现命令行贪吃蛇游戏
c语言·开发语言·学习·游戏·游戏程序·小游戏·贪吃蛇
电子科技圈21 小时前
XMOS将亮相台北国际电脑展并演示其在边缘AI和创新音频与互联等领域内的新方案
人工智能·游戏·计算机视觉·视觉检测·音视频·语音识别·实时音视频
@蓝莓果粒茶1 天前
【Unity笔记】保姆级AssetBundle详解(含代码+避坑指南)
笔记·游戏·unity
笨鸟先飞的橘猫1 天前
MMO游戏中的“跨服团队副本”匹配与状态同步系统
分布式·学习·游戏·lua·skynet
Zephyr_01 天前
Unity2D游戏制作
游戏·unity
资源分享助手2 天前
飞车端游26年5月最新马年限定车单机版下载和教程(含最新至尊踏月皮肤/创世女娲/T3机甲)
游戏
数智工坊2 天前
【深度学习RL】DQN:深度强化学习的里程碑——让AI从像素中学会玩Atari游戏
论文阅读·人工智能·深度学习·游戏·transformer