-
-
Save amowu/8121334 to your computer and use it in GitHub Desktop.
// Put your file to "YOUR_UNITY_PROJ/Assets/StreamingAssets" | |
// example: "YOUR_UNITY_PROJ/Assets/StreamingAssets/db.bytes" | |
string dbPath = ""; | |
if (Application.platform == RuntimePlatform.Android) | |
{ | |
// Android | |
string oriPath = System.IO.Path.Combine(Application.streamingAssetsPath, "db.bytes"); | |
// Android only use WWW to read file | |
WWW reader = new WWW(oriPath); | |
while ( ! reader.isDone) {} | |
realPath = Application.persistentDataPath + "/db"; | |
System.IO.File.WriteAllBytes(realPath, reader.bytes); | |
dbPath = realPath; | |
} | |
else | |
{ | |
// iOS | |
dbPath = System.IO.Path.Combine(Application.streamingAssetsPath, "db.bytes"); | |
} |
YOU ARE A GOD. Only place on the webz that I could find a solution to this problem, including searching on Unity's site. Thanks so much!
OOooO my gooood. TY for that script!
this worked. thanks!
Looks like everyone found this code work. Great ! I tried it to retrieve the .json file using his code and it didn't work. Anyone know how to use that code for .json file ?
This really is the only place to find a simple solution for this problem... can't believe it. But thanks!
@AliAkbarMontazeri I hope you've already found a solution for this, but just in case... I used this for my .json code in this way
string filePath = Application.streamingAssetsPath + "/file.json";
string jsonString;
if(Application.platform == RuntimePlatform.Android) //Need to extract file from apk first
{
WWW reader = new WWW(filePath);
while (!reader.isDone) { }
jsonString= reader.text;
}
else
{
jsonString= File.ReadAllText(filePath);
}
Board deserializedJsonObject = JsonUtility.FromJson<Board>(jsonString);
Is this the decompressing of file from StreamingAssets?
Thanks for share this code. @dnorth I used this same solution for my project. Thanks!
Thank you for the code , finally found a snippet I could use .
Also @dnorth for the JSON file handling !
If your file is too large (> 2MB in my case), waiting for www.isDone
in a while loop will hang the app.
Unity explicitly discourages this in the docs: You should not write loops that spin until download is done; use coroutines instead.
, because depending on the platform, the www download may take place on the main thread, which will hang up your app.
Could someone help me please with this . I'm still not getting the .json data from android.
I also had trouble getting the json to read. what is in Boards class from @dnorth that we don't see?
I have an XML file stored in the streamingAssets/XML/file.xml.
The code work for iOS but not in Android!!
Any Idea?
I'm extremely a newbie to Unity. I've a JSON file from the web. The JSON file contents loads well in Unity Desktop. However, when I build APK and load it from Phone, the JSON contents doesn't load. How can I get it to work?
Here is my code:
using UnityEngine;
using System.Collections;
using UnityEngine.UI;
using SimpleJSON;
public class DataLoader : MonoBehaviour
{
string JsonDataString;
public string OriginalJsonSite;
public Text Temp;
public Text Humid;
IEnumerator Start()
{
while (true)
{
WWW readingsite = new WWW(OriginalJsonSite);
yield return readingsite;
if (string.IsNullOrEmpty(readingsite.error))
{
JsonDataString = readingsite.text;
}
JSONNode jsonNode = SimpleJSON.JSON.Parse(JsonDataString);
Temp.text = jsonNode["temp"].ToString().ToUpper();
Debug.Log(jsonNode["temp"]);
Humid.text = jsonNode["humid"].ToString().ToUpper();
Debug.Log(jsonNode["humid"]);
yield return new WaitForSeconds(2);
}
}
}
Thanks !
Thankkkkkkkkk you verrrryyyyyyy muccccchhhhhhhh ;DDDDDDDD
Thanks a lot for sharing this!