You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Unity构建版本中获取exe所在目录向上一级父文件夹路径的方法

问题根因

  1. Unity Windows构建后,Application.dataPath指向的是exe同级的<应用名>_Data目录,对应你的目录结构就是ParentFolder/MainFolder/UnityApp_Data,你只拼接一层/../只会定位到MainFolder,自然拿不到目标ParentFolder。
  2. 原代码存在逻辑错误:手动拼接路径斜杠存在跨系统兼容风险,且RootFolder的判断逻辑完全倒置,会出现变量非空时返回硬编码/计算路径、变量为空时才返回空值的异常表现。
  3. 直接拼接的相对路径不会自动解析为绝对路径,部分系统API读取时可能识别失败。

修正方案

调整后完整代码:

private string GetDirectory() 
{
    // RootFolder为自定义路径配置变量,优先使用配置值
    if (!string.IsNullOrEmpty(RootFolder))
        return RootFolder;
        
#if UNITY_EDITOR
    // 编辑器下返回硬编码的父目录路径
    return "C:/Users/admin/source/ParentFolder/";
#else
    // 第一步:取UnityApp_Data的上级目录,即exe所在的MainFolder
    string mainFolder = Directory.GetParent(Application.dataPath).FullName;
    // 第二步:取MainFolder的上级目录,即目标ParentFolder
    string parentFolder = Directory.GetParent(mainFolder).FullName;
    // 规范化路径格式,避免斜杠混乱
    return Path.GetFullPath(parentFolder);
#endif
}

额外注意事项

  • 不要手动拼接/../这类相对路径,使用Directory.GetParent或者Path.Combine这类系统提供的API处理路径,天然适配不同系统的斜杠规则。
  • 如果你的程序会被安装到Program Files这类系统级保护目录,读取/写入上级目录需要程序获得管理员权限,否则会触发权限报错。
  • 本方案默认适用于Windows构建版本,如需兼容macOS/Linux平台,需要额外适配对应平台的构建后路径规则。

内容的提问来源于stack exchange,提问作者Vika

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 05:06:01