Загрузка больших объектов Unity3d MYSQL

В настоящее время я разрабатываю видеоигр, которым необходимо загружать уровни, записи и некоторые другие большие узлы данных в базу данных MySQL. Я разбираю эти объекты в шестнадцатеричной строке и загружаю данные в мою базу данных, а также в WWW-сообщение в Unity3D как varbinary.

object codedLevel = SaveGame.codedLevel; byte[] codedLevelBin = ObjectToByteArray(codedLevel); string codedLevelStr = "0x" + BitConverter.ToString (codedLevelBin).Replace("-", ""); 

Поскольку длина url ограничена по размеру, я должен разделить шестнадцатеричную строку, загрузить ее по частям и снова объединить детали при загрузке.

  int partSize = 2000; for( int i= 0; i <= codedLevelStr.Length ;i = i+partSize){ string part = ""; if (codedLevelStr.Length - i > partSize) part = codedLevelStr.Substring (i, partSize); else if (codedLevelStr.Length < partSize) part = codedLevelStr; else part = codedLevelStr.Substring (i); codedLevelLengthParts = codedLevelLengthParts + part.Length; //This connects to a server side php script that will add the level to a MySQL DB. // Supply it with a string representing the level string hash = Md5Sum(User + part+ i + LVLName + secretKey); string post_url = addLevelURL+ "&LVL=" + part + "&name=" + WWW.EscapeURL(User) + "&part=" + i/partSize + "&LVLName=" + WWW.EscapeURL(LVLName) + "&hash=" + hash; // Post the URL to the site and create a download object to get the result. WWW hs_post = new WWW(post_url); yield return hs_post; // Wait until the download is do } 

Как я могу загрузить весь объект codedLevel из сценария C # в Unity3D¿

Благодаря!

Поскольку длина url ограничена по размеру, я должен разделить шестнадцатеричную строку, загрузить ее по частям и снова объединить детали при загрузке.

Только метод GET имеет ограниченную длину, которая составляет 2048 символов, и в настоящее время вы используете метод GET для вашего запроса.

Это должно быть сделано с помощью метода POST с помощью класса WWWForm .

Предположим, вы хотите отправить name , age и score игрока, мы можем закодировать его с помощью кода ниже:

 WWWForm form = new WWWForm(); form.AddField("name", "Charles"); form.AddField("age", 29); form.AddField("scrore", 67); 

Добавить изображение профиля игрока или данные массива какого-либо типа?

 byte[] bytes = playerProfilePic; form.AddBinaryData("profilePic", bytes, "profilePic.png", "image/png"); 

или

 form.AddBinaryData("profilePic", bytes); 

Теперь давайте отправим это на Сервер.

 WWW connection = new WWW(url, form); yield return connection; 

Вот и все. Вам не нужно отправлять этот кусок по частям с помощью цикла for .