- Home /
Can't use json file from StreamingAssets on Android and iOS
Hello, everyone. Now I'm trying to implement localization in my small project by learning from Unity Live Training.
Unity Live Training: https://www.youtube.com/watch?v=5Kt9jbnqzKA&t=50s
It works fine in editor, but when I build and test run on an Android device, it can't find the right path and replace the text with the localized one. I researched a lot on the internet and tried to fix it by myself, but sadly it didn't work. (I have 0 experience on json and streaming assets.) The following is the script in my project. I'm really not sure how to fix it. I'll appreciate it if anyone could help me. Thank you.
void LoadLocalizedText (string fileName) {
localizedTextDictionary = new Dictionary<string, string> ();
string dataAsJson;
#if UNITY_EDITOR
string filePath = Path.Combine (Application.streamingAssetsPath, fileName);
#elif UNITY_IOS
string filePath = Path.Combine (Application.streamingAssetsPath + "/Raw", fileName);
#elif UNITY_ANDROID
string filePath = Path.Combine ("jar:file://" + Application.streamingAssetsPath + "!assets/", fileName);
#endif
if (File.Exists (filePath)) {
#if UNITY_EDITOR || UNITY_IOS
dataAsJson = File.ReadAllText (filePath);
#elif UNITY_ANDROID
WWW reader = new WWW (filePath);
while (!reader.isDone) {
}
dataAsJson = reader.text;
#endif
LocalizationData loadedData = JsonUtility.FromJson<LocalizationData> (dataAsJson);
for (int i = 0; i < loadedData.items.Length; i++) {
localizedTextDictionary.Add (loadedData.items [i].key, loadedData.items [i].value);
}
Debug.Log ("Data loaded, dictionary contains: " + localizedTextDictionary.Count + " entries");
} else {
Debug.LogError ("Cannot find file!");
}
isReady = true;
}
Your answer
Follow this Question
Related Questions
Multiple Cars not working 1 Answer
Distribute terrain in zones 3 Answers
Looking for Code that will Read JSON files (C# code) 2 Answers
The Object you want to Instantiate is null 0 Answers
Instantiate a sprite using json data value (C# Unity) 2 Answers