C# )。在我的答案中尝试新的LoadLocalizedText函数,如果它有效,请检查它。直接复制就行了。至于yield return null,不管您是下载还是加载它。您应该始终生成非常WWW的操作。同样,这是为了确保代码不会冻结Unity。我的意思是用Vi

C# )。在我的答案中尝试新的LoadLocalizedText函数,如果它有效,请检查它。直接复制就行了。至于yield return null,不管您是下载还是加载它。您应该始终生成非常WWW的操作。同样,这是为了确保代码不会冻结Unity。我的意思是用Vi,c#,unity3d,C#,Unity3d,)。在我的答案中尝试新的LoadLocalizedText函数,如果它有效,请检查它。直接复制就行了。至于yield return null,不管您是下载还是加载它。您应该始终生成非常WWW的操作。同样,这是为了确保代码不会冻结Unity。我的意思是用Visual Studio检查替换if(filePath.Contains(…)。我得到的错误是,并非所有代码路径都返回一个值“我的意思是用Visual Studio检查替换if(filePath.Contains(…)。”就像我上面说的,您不必这


)。在我的答案中尝试新的
LoadLocalizedText
函数,如果它有效,请检查它。直接复制就行了。至于
yield return null
,不管您是下载还是加载它。您应该始终生成非常
WWW
的操作。同样,这是为了确保代码不会冻结Unity。我的意思是用Visual Studio检查替换if(filePath.Contains(…)。我得到的错误是,并非所有代码路径都返回一个值“我的意思是用Visual Studio检查替换if(filePath.Contains(…)。”就像我上面说的,您不必这样做。
if(filePath.Contains(“:/”)
在我的代码中就可以做到这一点。这是因为Android streamingasset路径有“:/”但不适用于其他平台。至于您的错误,这是因为您缺少
返回null
。您需要它。可能您没有看到我的代码,请刷新此帖子以查看我代码中的编辑。如果您将其直接复制到IDE中,我答案中的最后一个代码将正常工作。不要修改它。只需按原样复制它。我刚刚注意到另一个问题r我用来创建此答案的代码中存在错误。您正在检查
if(reader.text==null | | reader.text==“”)
在下载完成之前。这是不对的。这应该在下载完成后完成。我已经再次更新了
LoadLocalizedText
功能。直接复制即可。一旦你让它工作,你可以将它更改为任何你想要的。谢谢!一定会尝试一下,并让你知道它是否有用。我还将更改if条件为“if UNITY_ANDROID”,而不是自己检测它运行在哪个平台上。但是,我必须说,该文件没有下载,而是包含在二进制文件中,因此,如果没有收益返回空值,我看不出我的while条件有什么问题。你不必添加
UNITY_ANDROID
或专门检查ANDROID。我已准备好使用
if(filePath.Contains(“:/”)处理该问题
。在我的答案中尝试新的
LoadLocalizedText
函数,如果它有效的话就可以。直接复制它。至于
返回null
,无论你是下载还是加载它都无所谓。你应该总是产生非常
WWW
的操作。同样,这是为了确保代码不会冻结Unity。我的意思是重新编译g使用Visual Studio检查if(filePath.Contains(…)。我得到的错误是,并非所有代码路径都返回一个值“我的意思是用Visual Studio检查替换if(filePath.Contains(…)。”就像我上面所说的,您不必这样做。
if(filePath.Contains(:/))
在我的代码中就可以做到这一点。这是因为Android streamingasset路径有“//”但不适用于其他平台。至于您的错误,这是因为您缺少
返回null
。您需要它。可能您没有看到我的代码,请刷新此帖子以查看我代码中的编辑。如果您将其直接复制到IDE中,我答案中的最后一个代码将正常工作。不要修改它。只需按原样复制它。我刚刚注意到另一个问题r我用来创建此答案的代码中存在错误。您正在检查
if(reader.text==null | | reader.text==“”)
在下载完成之前。这是不对的。这应该在下载完成之后进行。我已经再次更新了
LoadLocalizedText
功能。直接复制即可。一旦它开始工作,您可以将其更改为您想要的任何内容。
public bool LoadLocalizedText(SystemLanguage language)
{
    localizedText = new Dictionary<string, string>();
    string filePath = Path.Combine(Application.streamingAssetsPath, "localizedText_" + language + ".json");

    WWW reader = new WWW(filePath);
    if (reader.text == null || reader.text == "") return false;
    while (!reader.isDone) { }
    string dataAsJson;
    dataAsJson = reader.text;
    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("Data loaded, dictionary contains: " + localizedText.Count + " entries");
    if (localizedText.Count == 0) return false;
    else
    {
        isReady = true;
        return true;
    }
}
IEnumerator ReadFromStreamingAssets()
{
    string filePath = System.IO.Path.Combine(Application.streamingAssetsPath, "MyFile");
    string result = "";
    if (filePath.Contains("://"))
    {
        UnityEngine.Networking.UnityWebRequest www = UnityEngine.Networking.UnityWebRequest.Get(filePath);
        yield return www.SendWebRequest();
        result = www.downloadHandler.text;
    }
    else
        result = System.IO.File.ReadAllText(filePath);
}
public IEnumerator LoadLocalizedText(SystemLanguage language, Action<bool> success)
{
    localizedText = new Dictionary<string, string>();
    string filePath = Path.Combine(Application.streamingAssetsPath, "localizedText_" + language + ".json");

    string dataAsJson;

    //Android
    if (filePath.Contains("://"))
    {

        WWW reader = new WWW(filePath);

        //Wait(Non blocking until download is done)
        while (!reader.isDone)
        {
            yield return null;
        }

        if (reader.text == null || reader.text == "")
        {
            success(false);

            //Just like return false
            yield break;
        }

        dataAsJson = reader.text;
    }

    //iOS
    else
    {
        dataAsJson = System.IO.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("Data loaded, dictionary contains: " + localizedText.Count + " entries");
    if (localizedText.Count == 0)
        success(false);
    else
    {
        isReady = true;
        success(true);
    }
}
StartCoroutine(LoadLocalizedText(languageInstance, (status) =>
{
    if (status)
    {
        //Success
    }
}));
StreamReader streamReader = new StreamReader(File.OpenRead(string.Format("{0}/{1}.txt", filePath, fileName)));