Godot 3.5.1中PGSGP信号无法关联函数问题求助
针对Godot 3.5.1中PGSGP与Nakama集成问题的解决方案
1. 校验信号连接逻辑
确保信号连接代码的准确性,PGSGP的信号名称和连接方式不能出错:
func _ready(): # 替换为你的PGSGP节点实际路径 var play_service = get_node("GodotPlayGamesServices") # 连接登录成功信号到ConnectToNakama play_service.connect("sign_in_success", self, "ConnectToNakama") # 连接登录失败信号到对应处理函数 play_service.connect("sign_in_failed", self, "_on_sign_in_failed") # 执行登录 play_service.signIn()
注意:PGSGP的登录信号名称是sign_in_success和sign_in_failed,大小写和下划线必须完全匹配,否则信号无法触发。
2. 排查节点引用与初始化问题
- 先确认
play_service不是空引用:在调用connect前添加print(play_service),如果输出null,说明节点路径错误,或者节点未完成加载,需修正节点路径或调整代码执行时机。 - 部分PGSGP版本需要先执行初始化:如果插件提供
initialize方法,需在signIn前调用play_service.initialize(),确保插件完成初始化后再执行登录。
3. 修复代码补全提示异常
- 给
play_service添加类型注解,帮助Godot识别插件类型,恢复代码补全:
var play_service: GodotPlayGamesServices func _ready(): play_service = get_node("GodotPlayGamesServices") # 后续信号连接与登录代码
- 重启Godot编辑器并执行
Project > Clean Project清除缓存,重新输入代码后补全提示应该会正常显示。
4. 解决signIn移至其他函数无法登录的问题
- 避免在
_init中调用signIn,该阶段节点树尚未初始化完成,建议在_ready或用户交互事件(如按钮点击回调)中调用。 - 检查Android权限配置:确认
AndroidManifest.xml中已添加Google Play Games的必要配置(如APP_ID元数据),且项目已关联Google Play Console中的对应游戏项目,权限缺失会导致登录失败。
5. 调试信号触发状态
在ConnectToNakama函数开头添加打印语句,确认信号是否真的未触发:
func ConnectToNakama(): print("PGSGP登录成功,开始连接Nakama") # 你的Nakama连接逻辑
如果无打印输出,说明信号未被触发,需检查PGSGP插件版本是否适配Godot 3.5.1,尝试更新至最新兼容版本。
内容的提问来源于stack exchange,提问作者Benjamin
相关产品推荐
相关产品推荐

