如何在Godot 3.5(C#/.NET 6)中为Android导出包含外部文件?
Godot 3.5 C#导出Android:.onnx文件无法打包访问的解决方案
文件放置与引用
- 把.onnx文件直接放在项目的
res://目录下(可以新建models子目录归类,比如路径为res://models/xxx.onnx),和你的.txt文件同层级或子目录都可。 - 代码里直接用
res://路径引用,示例:string modelPath = "res://models/your_model.onnx";
确保文件被打包进APK
- 修正导出与导入设置:
仅在导出对话框的「内置资源」标签添加*.onnx可能不够,Godot 3.5对非标准扩展名文件可能默认跳过。右键你的.onnx文件 → 点击「导入」,在右侧导入面板勾选「保存为资源」,「导入为」选择「原始资源」,再点击「重新导入」。之后回到导出设置,确认*.onnx在包含列表中,同时检查「排除的文件/路径」里没有.onnx相关规则。 - 代码验证文件存在性:
导出前可在编辑器里用代码确认路径有效性,导出后也可加日志排查:if (FileAccess.FileExists(modelPath)) { GD.Print("ONNX文件已找到"); } else { GD.PrintErr("ONNX文件缺失,路径:" + modelPath); }
onnxruntime相关配置
- 确认安装的是适配Android的onnxruntime NuGet包(比如
Microsoft.ML.OnnxRuntime.Android),避免装成桌面版本。 - 如果开启了自定义构建,检查
build.gradle里是否有onnxruntime依赖——正常NuGet会自动添加,若缺失可手动在dependencies块中补充:implementation 'com.microsoft.onnxruntime:onnxruntime-android:1.15.1' // 版本号需与你的NuGet版本对应 - 无需修改
AndroidManifest.xml,打包在APK内的资源不需要额外权限。
常见排查点
- 注意文件名大小写:Android文件系统区分大小写,代码中的路径需与实际文件名完全一致(比如
Model.onnx和model.onnx是两个不同文件)。 - 清理导出缓存:删除项目目录下的
export/android/build文件夹后重新导出,避免旧缓存导致配置残留问题。
内容的提问来源于stack exchange,提问作者J. Fenigan
相关产品推荐
相关产品推荐

