无效的目录斜杠

时间:2018-09-30 17:00:47

标签: c# file unity3d io

我现在遇到了一个奇怪的问题。我正在尝试从StreamingAssets加载本地化json文件。我正在使用Path.Combine将StreamingAssetsPath和Path组合在一起以形成完整路径。 Path的值为en-us。但是由于某种原因,在封装字符串时,Path.Combine会引发\,因此我的路径无效。如果我将Path的值更改为/ en-US,则它将完全切断Application.StreamingAssetsPath部分。

Path = en-US的调试日志记录结果:

C:/ Users / bluem / Documents / Fishtale / Assets / StreamingAssets \ zh-CN

Debug.Path = / en-US的日志记录结果

/ zh-CN

我只是无法对此怪异现象大声疾呼。

public void LoadLocalizedText()
    {
        localizedText = new Dictionary<string, string>();
        string filePath = Path.Combine(Application.streamingAssetsPath, path);

        Debug.Log(filePath);

        if (File.Exists(filePath))
        {
            string dataAsJson = File.ReadAllText(filePath);
            LocalizationData loadedData = JsonUtility.FromJson<LocalizationData>(dataAsJson);

            for (int i = 0; i < loadedData.items.Length; i++)
            {
                localizedText.Add(loadedData.items[i].key, loadedData.items[i].value);
            }

            Debug.Log("Localization Manager: Data loaded, dictionary contains: " + localizedText.Count + " entries.");
        }
        else
        {
            Debug.LogError("Localization Manager: Cannot find data file name: " + filePath);
            return;
        }

        isReady = true;
    }

1 个答案:

答案 0 :(得分:0)

我会回答我自己的问题。提供的响应很有帮助,但不能解决问题。

问题实际上不在代码中,而是对要传递的文件的引用。该文件需要包含.json扩展名,否则将找不到该文件。因此,在这种情况下,答案是将Path的值从en-US更改为en-US.json。