При нажатии на кнопку должны отослаться две переменные в скрипт на PHP, а этот скрипт должен передать их значения обратно в Unity приложение, которое выведит их на экран. Видимо, переменные не передаются, так как Unity выводит моё сообщение: Error: cannot get veriables.
Unity
Код
public void clickNext() { StartCoroutine("next"); }
IEnumerator next() { WWWForm form = new WWWForm(); form.AddField("lesson_num", "1"); form.AddField("verb_num", "2"); WWW www = new WWW("http://stepbystep.freeoda.com/get_phrase.php", form); yield return www; output.text = www.text; }
Добавлено (06 мая 2015, 11:13) --------------------------------------------- Что интересно, такой код работает из редактора Unity на локальном сервере, который я запускаю через XAMPP:
Вывод:
Цитата
1 2
Код
public void clickNext() { StartCoroutine("next"); }
IEnumerator next() { WWWForm form = new WWWForm(); form.AddField("lesson_num", "1"); form.AddField("verb_num", "2"); WWW www = new WWW("localhost/Unity/Polyglot/get_phrase.php", form); yield return www; output.text = www.text; }
Добавлено (06 мая 2015, 11:36) --------------------------------------------- Вот что я сделал: Edit -> Project Settings -> Host URL = http://stepbystep.freeoda.com/crossdomain.xml
На удалённом сервере в корне расположил файл crossdomain.xml:
Добавлено (06 мая 2015, 11:53) --------------------------------------------- Мне кажется, что из редактора работает, так как я ставлю в "WWW Security Emulation": Edit -> Project Settings -> Host URL = http://stepbystep.freeoda.com/crossdomain.xml
А когда пакетирую в приложение и загружаю на сервер, то эта настройка перестаёт работать. Это только предположение
Если из редактора запускать с выводом переменных (var_dump), то так выглядит:
Цитата
string(1) "1" string(1) "2" 1 2
Сообщение отредактировал 8Observer8 - Среда, 06 Мая 2015, 11:54
Пфф.. смешно, я думаю, что если бы ты увидел исходники, то и 20% от всего кода не понял. А чтобы самому что-то исправить в чужом коде, тем более в игровом движке такого уровня, ну это надо быть просто гуру программирования Мой блог - infcode.com
Пфф.. смешно, я думаю, что если бы ты увидел исходники, то и 20% от всего кода не понял. А чтобы самому что-то исправить в чужом коде, тем более в игровом движке такого уровня, ну это надо быть просто гуру программирования
проблема в том что, можно или самому через тяжесть исправить или искать пользовательские фиксы, который выйдут раньше официальных да и я нормально разбираюсь в чужом коде в еюдуго прсхлуренц http://gcup.ru/forum/9-44187-1 мой Project 96
Сообщение отредактировал PoidetLi - Четверг, 07 Мая 2015, 08:17
Именно к mysql или имеешь ввиду post/get к веб-серверу?
Хорошая наводка. Сейчас хотя бы echo проверю.
Добавлено (29 декабря 2015, 18:18) --------------------------------------------- Из Unity работает, то есть с PC - работает, получаю строку: Ok, we get: Hello. Сейчас соберу приложение в WebGL и на Google Drive.
На всякий случай, приведу какой у меня сейчас код:
Скрипт на клиенте:
Код
using UnityEngine; using System.Collections; using UnityEngine.UI;
public class UIManager : MonoBehaviour { public InputField output;
public void SaveStrOnClick() { StartCoroutine("SaveStr"); }
IEnumerator SaveStr() { WWWForm form = new WWWForm(); form.AddField("str", "Hello"); WWW www = new WWW("http://dev3dapps.freeoda.com/unity/Polyglot/database.php", form); yield return www; output.text = www.text; } }
Скрипт на сервере:
Код
<?php
if (!empty($_POST["str"])) { $str = $_POST["str"]; echo "Ok, we get: ".$str; } else { echo "Error: cannot get str"; }
Добавлено (29 декабря 2015, 18:47) --------------------------------------------- Собрал в WebGL, отгрузил на Google Drive - не работает. Ничего не получаю. Сейчас попробую отгрузить на тот же сервер.
Сообщение отредактировал 8Observer8 - Вторник, 29 Декабря 2015, 19:05
if (!empty($_POST["str"])) { $str = $_POST["str"]; echo "Ok, we get: ".$str; } else { echo "Error: cannot get str"; }
Добавлено (29 декабря 2015, 21:37) --------------------------------------------- Не получилось так как я выше написал. Опять из редактора приходит строка от сервера, а когда собираю в WebGL, то приходит пустая строка. Я нашёл такую же проблему, то там человек отправляет CORS вместе с данными.
Добавлено (29 декабря 2015, 22:47) --------------------------------------------- И если задавать CORS в C# скрипте - тоже не катит:
Код
using UnityEngine; using System.Collections; using UnityEngine.UI; using System.Collections.Generic;
public class UIManager : MonoBehaviour { public InputField output;
public void SaveStrOnClick() { StartCoroutine("SaveStr"); }
IEnumerator SaveStr() { WWWForm form = new WWWForm();
Добавлено (29 декабря 2015, 23:40) --------------------------------------------- Я решил проблему! Вместо Google Drive Hosting я отгрузил на другой бесплатный хостинг.
Вот мои скрипты:
Unity side:
Код
using UnityEngine; using System.Collections; using UnityEngine.UI;
public class UIManager : MonoBehaviour { public InputField output;
public void SaveStrOnClick() { StartCoroutine("SaveStr"); }
IEnumerator SaveStr() { WWWForm form = new WWWForm(); form.AddField("str", "Hello"); WWW www = new WWW("http://dev3dapps.freeoda.com/unity/Polyglot/database.php", form); yield return www; output.text = www.text; } }
if (!empty($_POST["str"])) { $str = $_POST["str"]; echo "Ok, we get: ".$str; } else { echo "Error: cannot get str"; }
Добавлено (04 апреля 2016, 17:04) --------------------------------------------- Вариант ASP.NET и Unity (ПК клиент). Из скрипта на Unity отправляю имя "Ivan", а с сервера ASP.NET возвращается "Hello, Ivan"
P.S. Лично для меня удобнее использовать ASP.NET, так как это тоже C# и не нужно изучать новый язык (то есть PHP). Вместо MySQL использую SQLite в связке с ASP.NET, что тоже удобно, так как на ПК и андройде можно использовать SQLite, значит, не нужно пока изучать MySQL. К тому же, скорее всего, на всех платформах можно использовать LinqToSql, что удобнее чистого SQL и единообразно
Добавлено (05 апреля 2016, 18:47) --------------------------------------------- Хотя с другой стороны изучать PHP и MySQL тоже интересно и полезно. Я сейчас делаю на MySQL регистрацию и логин с клиента на Unity