2014-10-07 37 views
0

我一直在C#中開發Unity3D遊戲。所以我已經設置了遊戲上傳遊戲保存文件 每2分鐘解析一次。當我在Unity中運行代碼時,它工作正常,它在本地保存遊戲保存文件,每隔2分鐘將其上傳到Parse,同時也指向正在玩遊戲的用戶。儘管當我在移動設備上運行遊戲時,該文件不會上傳,但在過去的半小時內我一​​直在刷新我的分析數據對象,但我仍然沒有任何東西。Parse.com上的文件上傳不起作用

下面是代碼:

void Start() 
{ 
    if (ParseUser.CurrentUser != null) 
    { 
     gapTest = true; 
    } 
} 

void Update() 
{ 
    if(gapTest) 
    { 
     StartCoroutine(UploadFile()); 
    } 
     if (uploadSaveFile) 
    { 
     OnZipComplete(); 
     uploadSaveFile = false; 
    } 
    else if (createNewSaveFile) 
    { 
     CreateNewSaveFile(); 
     createNewSaveFile = false; 
    } 
} 

IEnumerator UploadFile() 
{ 
    gapTest = false; 
    yield return new WaitForSeconds (120.0F); 
    if(ParseUser.CurrentUser != null) 
    { 
     OnZipComplete(); 
    } 
    gapTest = true; 
} 

void OnZipComplete() 
{ 
    var query = ParseObject.GetQuery("GameSave").WhereEqualTo("UserObjectId", ParseUser.CurrentUser); 

    if (existingGameSave == null) 
    { 
     query.FindAsync().ContinueWith(t => 
     { 
      IEnumerable<ParseObject> results = t.Result; 

      int resultCount = 0; 
      foreach (var result in results) 
      { 
       if (resultCount > 0) 
       { 
        Debug.LogError("Found more than one save file for user!"); 
       } 
       else 
       { 
        resultCount++; 
        existingGameSave = result; 
        uploadSaveFile = true; 
       } 
      } 

      if (resultCount == 0) 
      { 
       createNewSaveFile = true; 
      } 
     }); 
    } 
    else 
    { 
     UpdateExistingSaveFile(); 
    } 
} 

private void CreateNewSaveFile() 
{ 
    //upload the file to parse 
    zipPath = Application.persistentDataPath + "/SaveGame.zip"; 

    byte[] data = System.Text.Encoding.UTF8.GetBytes(zipPath); 
    ParseFile GameSave = new ParseFile("GameSave.zip", data); 

    var gameSave = new ParseObject("GameSave"); 
    gameSave["UserObjectId"] = ParseUser.CurrentUser; 
    gameSave["GameSaveFile"] = GameSave; 
    Task saveTask = gameSave.SaveAsync(); 

    Debug.Log("New Game save file has been uploaded"); 
} 

void UpdateExistingSaveFile() 
{ 
    //upload the file to parse 
    UserIdFile = Application.persistentDataPath + "/UserId.txt"; 
    zipPath = Application.persistentDataPath + "/SaveGame.zip"; 

    byte[] data = System.Text.Encoding.UTF8.GetBytes(zipPath); 
    ParseFile GameSave = new ParseFile("GameSave.zip", data);    
    existingGameSave["GameSaveFile"] = GameSave; 
    Task saveTask = existingGameSave.SaveAsync(); 

    Debug.Log("Existing Game save file has been uploaded"); 
} 

回答

0

這可能是相關權限的Android設備上的問題。

轉到生成設置>播放器設置>其他設置,並選中「寫入訪問」,默認情況下,它是內部唯一的,這意味着該路徑僅用於開發目的。

嘗試將寫訪問設置爲外部(SD卡)或將WRITE_EXTERNAL_STORAGE權限添加到AndroidManifest.xml中。如果您的數據實際上是在設備上寫入的,請檢查SD卡的Android/file/com.your.appid /文件。

如果數據正在寫入,那麼它肯定會上傳到parse.com。