huohuaX 2025-10-06 18:53 采纳率: 0%
浏览 11

Godot引擎使用问题

最近试图汉化一个Godot引擎的游戏,用gdre tools反编译后有一点提示。
The following resource types were detected in the project that conversion is not implemented for yet.
See Export Report to see which resources were not exported.
You will still be able to edit the project in the editor regardless.
Resource Type: FontFile Format: fnt
Importer: font_data bmfont
Resource Type: Resource Format: dialogue Importer: dialogue_manager (non-standard resource)
Totals
不过没在意。然后导入了Godot引擎编辑器,想用这个来打包。结果先是报错,plugin.gd找不到main_view.tscn文件,于是就重新安装了一下dialogue manager这个插件,没报错了。
但是发现assets目录下的dialogue文件夹不可展开。里面都是.import文件。

img


而且导出为apk时,也没有看到dialogue文件夹。

img


导出后的apk中也不含dialogue文件夹,且安装后对话功能失效。
但是原apk中就有dialogue文件夹。

img


本来是想直接修改原apk文件,不用Godot引擎编辑器。但发现修改后,安装运行总会闪退。只好用Godot引擎了。结果还不行。
去网上看了看,也有个哥们遇上同样情况。不过评论里说dialogue是被认定为内部类,所以默认导出。但这和我的情况不一样。
请问这个怎么办?

  • 写回答

4条回答 默认 最新

  • 檀越@新空间 2025-10-06 18:55
    关注

    晚上好🌙🌙🌙
    本答案参考通义千问

    你遇到的问题是关于 Godot 引擎中 dialogue 资源类型 的导出问题,特别是在使用 GDRE Tools 反编译后,导入 Godot 编辑器时出现资源丢失、无法展开和导出失败的情况。以下是详细分析与解决方案:


    🧠 问题核心分析

    1. dialogue 是非标准资源类型
      根据你的提示:

      Resource Type: Resource Format: dialogue Importer: dialogue_manager (non-standard resource)
      

      表明 dialogue 是一个自定义的资源类型,可能由某个插件(如 Dialogue Manager)引入,但 Godot 默认不支持导出这类资源

    2. 导出为 APK 时未包含 dialogue 文件夹
      这是因为 Godot 在导出时会忽略未被引用或未被标记为“资源”的文件夹,特别是非标准资源类型。

    3. 修改原 APK 后闪退
      原 APK 中的 dialogue 文件夹可能是通过 资源路径内部结构 引用的,直接替换文件可能导致路径错误或数据损坏。


    ✅ 解决方案步骤

    1. 确认 dialogue 文件夹是否为资源

    • 打开 Godot 编辑器,进入项目设置(Project Settings)。
    • 检查 Resource PathsImport Settings,确保 dialogue 文件夹被正确识别为资源目录。
    • 如果没有,手动将 dialogue 文件夹添加为资源路径(res://assets/dialogue)。

    重点:确保 dialogue 文件夹被 Godot 识别为资源目录。


    2. 检查 dialogue 文件是否被正确引用

    • 在代码中查找对 dialogue 文件的引用(如 load("res://assets/dialogue/xxx.dialogue"))。
    • 如果没有引用,Godot 会将其视为无用资源并导出时忽略。

    重点:所有资源必须在代码中显式引用,否则不会被导出。


    3. 使用 GDScript 确保资源被加载

    如果你使用的是 dialogue_manager 插件,确保在启动场景中加载了 dialogue 文件。

    # main_scene.gd
    extends Node
    
    func _ready():
        var dialogue = load("res://assets/dialogue/dialogue_file.dialogue")
        if dialogue:
            print("Dialogue loaded successfully.")
    

    重点:即使不使用对话功能,也要确保资源被加载一次。


    4. 修改导出设置以包含非标准资源

    • 在 Godot 编辑器中,进入 Export 设置。
    • Custom Export Preset 中,选择你的平台(如 Android)。
    • Additional Files 部分,手动添加 dialogue 文件夹,确保它被包含在 APK 中。

    重点:在导出时手动添加资源文件夹,避免被遗漏。


    5. 重新安装 Dialogue Manager 插件

    • 确保你使用的是 最新版本dialogue_manager 插件。
    • 从 GitHub 或官方仓库下载插件,并按照文档重新安装。

    重点:旧版本插件可能存在兼容性问题。


    6. 检查 APK 导出日志

    • 导出 APK 后,在 Godot 编辑器中查看 Export Report
    • 检查是否有以下信息:
      • Resources not exported
      • Non-standard resources ignored
    • 如果有相关提示,说明 dialogue 资源未被导出。

    重点:导出报告是排查资源缺失的关键工具。


    7. 使用 res:// 路径确保资源可访问

    • 确保所有 dialogue 文件的路径都使用 res:// 格式(如 res://assets/dialogue/xxx.dialogue)。
    • 不要使用绝对路径或相对路径(如 assets/dialogue/xxx.dialogue)。

    重点:Godot 对资源路径非常敏感,必须使用 res://


    🛠️ 示例代码:确保资源被加载

    # main_scene.gd
    extends Node
    
    func _ready():
        # 加载 dialogue 文件
        var dialogue_path = "res://assets/dialogue/dialogue_file.dialogue"
        var dialogue = load(dialogue_path)
        
        if dialogue:
            print("Dialogue loaded from:", dialogue_path)
            # 使用 dialogue 数据
        else:
            print("Failed to load dialogue file at:", dialogue_path)
    

    🔍 总结

    | 步骤 | 内容 | |------|------| | 1 | 确认 dialogue 文件夹是资源目录 | | 2 | 检查 dialogue 是否被代码引用 | | 3 | 使用 GDScript 显式加载资源 | | 4 | 在导出设置中手动添加 dialogue 文件夹 | | 5 | 确保使用最新版 dialogue_manager 插件 | | 6 | 查看导出报告,检查资源是否被忽略 | | 7 | 使用 res:// 路径确保资源可访问 |


    📌 最终建议

    如果你仍然无法解决,可以尝试以下方法:

    1. dialogue 文件转换为 JSON 或 XML,并使用 Godot 内置的 JSONXML 加载器。
    2. 联系插件作者,询问如何正确导出 dialogue 资源。
    3. 备份原始 APK,并在 Godot 中完全重建项目结构,避免依赖反编译内容。

    如有更多代码片段或错误日志,欢迎继续提问!

    评论

报告相同问题?

问题事件

  • 修改了问题 10月6日
  • 创建了问题 10月6日