C# Parse.com上的文件上载是';行不通

C# Parse.com上的文件上载是';行不通,c#,android,file-upload,unity3d,parse-platform,C#,Android,File Upload,Unity3d,Parse Platform,我一直在用C#开发Unity3D游戏。所以我把游戏设置为上传游戏保存文件 每2分钟分析一次。当我在Unity中运行代码时,它工作正常,它将游戏保存文件保存在本地,每2分钟上传一次以进行解析,它还指向正在玩游戏的用户。虽然当我在移动设备上运行游戏时,文件没有上传,但在过去的半个小时里,我一直在刷新我的解析数据对象,但我仍然没有得到任何东西 代码如下: void Start () { if (ParseUser.CurrentUser != null) { gapT

我一直在用C#开发Unity3D游戏。所以我把游戏设置为上传游戏保存文件 每2分钟分析一次。当我在Unity中运行代码时,它工作正常,它将游戏保存文件保存在本地,每2分钟上传一次以进行解析,它还指向正在玩游戏的用户。虽然当我在移动设备上运行游戏时,文件没有上传,但在过去的半个小时里,我一直在刷新我的解析数据对象,但我仍然没有得到任何东西

代码如下:

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");
}
void Start()
{
if(ParseUser.CurrentUser!=null)
{
gapTest=true;
}
}
无效更新()
{
如果(gapTest)
{
start例程(UploadFile());
}
如果(上传保存文件)
{
OnZipComplete();
uploadSaveFile=false;
}
else if(createNewSaveFile)
{
CreateNewSaveFile();
createNewSaveFile=false;
}
}
IEnumerator上载文件()
{
gapTest=false;
收益率返回新的WaitForSeconds(120.0F);
if(ParseUser.CurrentUser!=null)
{
OnZipComplete();
}
gapTest=true;
}
void OnZipComplete()
{
var query=ParseObject.GetQuery(“GameSave”).WhereEqualTo(“UserObjectId”,ParseUser.CurrentUser);
如果(existingGameSave==null)
{
query.FindAsync().ContinueWith(t=>
{
IEnumerable results=t.Result;
int resultCount=0;
foreach(结果中的var结果)
{
如果(结果计数>0)
{
LogError(“为用户找到多个保存文件!”);
}
其他的
{
resultCount++;
existingGameSave=结果;
uploadSaveFile=true;
}
}
if(resultCount==0)
{
createNewSaveFile=true;
}
});
}
其他的
{
UpdateExistingSaveFile();
}
}
私有void CreateNewSaveFile()
{
//上载要解析的文件
zipPath=Application.persistentDataPath+“/SaveGame.zip”;
byte[]data=System.Text.Encoding.UTF8.GetBytes(zipPath);
ParseFile GameSave=新的ParseFile(“GameSave.zip”,数据);
var gameSave=newparseobject(“gameSave”);
gameSave[“UserObjectId”]=ParseUser.CurrentUser;
gameSave[“GameSaveFile”]=gameSave;
Task saveTask=gameSave.SaveAsync();
Log(“新游戏保存文件已上传”);
}
void UpdateExistingSaveFile()
{
//上载要解析的文件
UserIdFile=Application.persistentDataPath+“/UserId.txt”;
zipPath=Application.persistentDataPath+“/SaveGame.zip”;
byte[]data=System.Text.Encoding.UTF8.GetBytes(zipPath);
ParseFile GameSave=新的ParseFile(“GameSave.zip”,数据);
existingGameSave[“GameSaveFile”]=GameSave;
Task saveTask=existingGameSave.SaveAsync();
Log(“已上载现有游戏保存文件”);
}

这可能是与android设备上的权限相关的问题

进入Build Setting>Player Setting>Other Settings,并选中“Write Access”,默认情况下,该路径仅为内部路径,这意味着该路径仅用于开发目的

尝试将写访问设置为外部(SD卡)或将写外部存储权限添加到AndroidManifest.xml中。如果您的数据实际上正在写入设备,请检查sd卡的Android/file/com.your.appid/files

如果数据被写入,那么它肯定会上传到parse.com上