Передача параметра от PHP в Unity(Решено)

Программирование на Юнити.

Передача параметра от PHP в Unity(Решено)

Сообщение ][@FF 13 апр 2011, 17:16

Доброго дня.
у меня есть два(и более) отдельных веб проекта билденных в юньке с одинаковыми настройками. (две и более комнат помещения)

На нажатие мыши в одной сцене я открываю другую (на пхп странице, передаю параметром название билда комнаты, и открываю на той же самой странице), но вот загвоздка как мне переместить камеру (в каждой комнате она своя, тк билды разные) в нужное мне положение при загрузке сцены (стоит учитывать что в комнате несколько дверей, следовательно камера не может появляться в одном и том же месте, то есть если я вышел из 3 комнаты во 2ую я должен появиться у второго выхода 2 комнаты, а если из 1ой комнаты во 2ую то у первого выхода 2ой комнаты)

я предположил что можно положение камеры в комнате передавать параметром вместе с параметров сцены(уровня, комнаты), но как им воспользоваться я не знаю. При этом мне не желательно чтобы параметр положения камеры отображался на созданной пхп странице.

Синтаксис:
Используется csharp
using UnityEngine;
using System.Collections;

public class ForTeleport : MonoBehaviour
{
GameObject MainCamTeleport;

void Start ()
    {
         //нашли нашу камеру в сцене
         MainCamTeleport = GameObject.Find("Main Camera");
    }

void Awake()
   {
      if (параметр нашей камеры равен 4) // не знаю как это проверить или узнать
          {
                 MainCamTeleport.transform.position = new Vector3(-0.02002808f, 1.066905f, -9.907888f);
          }
   }
void OnMouseDrag()
    {
         //на нажатие передаем параметром билд комнаты и необходимую нам позицию камеры в комнате
         Application.OpenURL("http://MySyte/MuseyGame/index.php?ourparamlevel=room1,pcampos=4");
         // наша сцена загружается и переходим в Awake()
    }
}


задача сводится к ому чтобы правильно получить параметр положения камеры и в зависимости от него переместить ее в нужное нам положение. Спасибо за внимание.
Последний раз редактировалось ][@FF 16 апр 2011, 12:53, всего редактировалось 2 раз(а).
Аватара пользователя
][@FF
UNIт
 
Сообщения: 62
Зарегистрирован: 24 фев 2011, 20:02
  • ICQ

Re: Передача параметра от PHP в Unity

Сообщение eric 13 апр 2011, 17:32

Отправляйте для отображения в PHP через Get как и делаете. Параллельно пишите в PlayerPrefs
Потом читайте из PlayerPrefs.
http://unity3d.com/support/documentation/ScriptReference/PlayerPrefs.html
eric
UNец
 
Сообщения: 38
Зарегистрирован: 12 июн 2010, 12:35

Re: Передача параметра от PHP в Unity

Сообщение ][@FF 13 апр 2011, 19:49

если я вас правильно понял то

Синтаксис:
Используется csharp
using UnityEngine;
using System.Collections;

public class ForTeleport : MonoBehaviour
{
GameObject MainCamTeleport;

void Start ()
    {
         //нашли нашу камеру в сцене
         MainCamTeleport = GameObject.Find("Main Camera");
    }

void Awake()
   {
      if (PlayerPrefs.GetInt("pcampos")==4)
          {
                 MainCamTeleport.transform.position = new Vector3(-0.02002808f, 1.066905f, -9.907888f);
          }
   }
void OnMouseDrag()
    {
         //на нажатие передаем параметром билд комнаты и необходимую нам позицию камеры в комнате
         Application.OpenURL("http://MySyte/MuseyGame/index.php?ourparamlevel=room1");
         PlayerPrefs.SetInt("pcampos", 4);
         // наша сцена загружается и переходим в Awake()
    }
}


если да то что то не то при проверке значения PlayerPrefs.GetInt("pcampos") выдает что равен 0, а не 4 как хотелось бы, он точно позволяет передавать значения между разными билдами, то есть room1.unity3d и room2.unity3d?
Ваш вариант не подходит, PlayerPrefs работает только внутри одного проекта, у меня получается два разных проекта room1.unity3d и room2.unity3d
Аватара пользователя
][@FF
UNIт
 
Сообщения: 62
Зарегистрирован: 24 фев 2011, 20:02
  • ICQ

Re: Передача параметра от PHP в Unity(Активно)

Сообщение eric 14 апр 2011, 08:42

Формируйте страницу WebPlayer'а динамически - после загрузки JavaScript со страницы пусть передает массив в проект. В unity уже парсите.
Либо усложняйте и используйте запрос из каждой сцены с Get параметром = имя сцены в php , который на основании сессии и переданого параметра выдает то, что нужно.
Может я просмотрел - но что мешает просто использовать глобальные переменные внутри самого unity между этими проектами?
Они как загружаются?
Грузите следующий проект в предыдущий проект.
eric
UNец
 
Сообщения: 38
Зарегистрирован: 12 июн 2010, 12:35

Re: Передача параметра от PHP в Unity(Активно)

Сообщение ][@FF 14 апр 2011, 14:01

"Может я просмотрел - но что мешает просто использовать глобальные переменные внутри самого unity между этими проектами?
Они как загружаются?
Грузите следующий проект в предыдущий проект."

При веб билде Юнити создает три файла
1) UnityObject.js
2) WebPlayer.html - та страница на которой мы отображаем наш проект
3) WebPlayer.unity3d - наш один из проектов (room1.unity3d, room2.unity3d,room3.unity3d и тд)

дабы грузить все сцены в одной странице я переделал немного WebPlayer.html
теперь она стала index.php и в нее передается параметр комнаты

$pLevel=$_GET["ourparamlevel"];

и строчку в этой странице
unityObject.embedUnity("unityPlayer", "WebPlayer.unity3d", 800, 600, params);
меняем на
unityObject.embedUnity('unityPlayer', '".$pLevel.".unity3d', 800, 600, params);

в результате чтобы загрузить новый проект (room2.unity3d) нужно из index.php (в которой сейчас отображается проект room1.unity3d) передать запрос в саму себя с параметром требуемой комнаты

void OnMouseDrag()
{
Application.OpenURL("http://MySyte/MuseyGame/index.php?ourparamlevel=room2");
}

таким образом я загружаю новый проект, получается что я старый проект стираю и заместо него прогружаю новый, поэтому я не могу использовать глобальные переменные они обнуляются.

Грузите следующий проект в предыдущий проект. - каким образом?
Формируйте страницу WebPlayer'а динамически - после загрузки JavaScript со страницы пусть передает массив в проект. В unity уже парсите. - я не спец в программировании, без пинка и подсказки сложно
Либо усложняйте и используйте запрос из каждой сцены с Get параметром = имя сцены в php , который на основании сессии и переданого параметра выдает то, что нужно. - по моему я так и делаю, если нет то опишите как
Аватара пользователя
][@FF
UNIт
 
Сообщения: 62
Зарегистрирован: 24 фев 2011, 20:02
  • ICQ

Re: Передача параметра от PHP в Unity(Активно)

Сообщение mentors 14 апр 2011, 16:07

А куки не пробовали?
Аватара пользователя
mentors
UNITрон
 
Сообщения: 309
Зарегистрирован: 20 мар 2011, 19:32
Откуда: Россия

Re: Передача параметра от PHP в Unity(Активно)

Сообщение eric 14 апр 2011, 16:18

Вариантов просто много и выбор конкретного лучше основывать на требованиях. Судя по тому как я понял :

Посмотрите
http://unity3d.com/support/documentation/ScriptReference/BuildPipeline.BuildAssetBundle.html
и
http://unity3d.com/support/documentation/ScriptReference/WWW-assetBundle.html
В коде создаете статический массив точек спауна для каждой комнаты в зависимости от предыдущей комнаты, и переменную с номером текущей комнтаы. После загрузки комнтаты перемещаете камеру согласно данным.
eric
UNец
 
Сообщения: 38
Зарегистрирован: 12 июн 2010, 12:35

Re: Передача параметра от PHP в Unity(Активно)

Сообщение ][@FF 14 апр 2011, 17:20

ммм, а что за вариант с куки?
Аватара пользователя
][@FF
UNIт
 
Сообщения: 62
Зарегистрирован: 24 фев 2011, 20:02
  • ICQ

Re: Передача параметра от PHP в Unity(Активно)

Сообщение mentors 14 апр 2011, 18:15

][@FF писал(а):ммм, а что за вариант с куки?

Ку́ки (слово не склоняется; от англ. cookie — печенье) — небольшой фрагмент данных, созданный веб-сервером или веб-страницей и хранимый на компьютере пользователя в виде файла, который веб-клиент (обычно веб-браузер) каждый раз пересылает веб-серверу в HTTP-запросе при попытке открыть страницу соответствующего сайта. Применяется для сохранения данных на стороне пользователя, на практике обычно используется для:
аутентификации пользователя;
хранения персональных предпочтений и настроек пользователя;
отслеживания состояния сессии доступа пользователя;
ведения статистики о пользователях.
wikipedia

Поясняю, можно хранить данные (значения переменных) на стороне клиента, даже при переходе с одной страницы на другую... При повторном открытии страницы и так далее...
Аватара пользователя
mentors
UNITрон
 
Сообщения: 309
Зарегистрирован: 20 мар 2011, 19:32
Откуда: Россия

Re: Передача параметра от PHP в Unity(Активно)

Сообщение ][@FF 14 апр 2011, 18:39

я знаю что такое куки =) мне больше интересно как с ним работать, ссылочку что ли или примерчик наглядный было бы не плохо
Аватара пользователя
][@FF
UNIт
 
Сообщения: 62
Зарегистрирован: 24 фев 2011, 20:02
  • ICQ

Re: Передача параметра от PHP в Unity(Активно)

Сообщение Avatarchik 14 апр 2011, 22:13

Чтобы не какой информации в страницы не было, то на сервере создай какой-то файлик и в него пиши данные...А в новом проекте читай.
Добавить ava-karaban в Skype
Аватара пользователя
Avatarchik
UNITрон
 
Сообщения: 274
Зарегистрирован: 04 апр 2009, 15:36
Откуда: Украина(Донецк)
  • ICQ

Re: Передача параметра от PHP в Unity(Активно)

Сообщение ][@FF 14 апр 2011, 22:38

= ) а теперь представим что у нас несколько пользователей = ) для каждого индивидуально создаем текстовый файлик = ) вам сервер не жалко? = ) меня потому и зацепила идея с куки файлами потому что они создаются на стороне клиента = )
Аватара пользователя
][@FF
UNIт
 
Сообщения: 62
Зарегистрирован: 24 фев 2011, 20:02
  • ICQ

Re: Передача параметра от PHP в Unity(Активно)

Сообщение Avatarchik 14 апр 2011, 23:09

Да при таком раскладе надо делать через cookies. :-B
Добавить ava-karaban в Skype
Аватара пользователя
Avatarchik
UNITрон
 
Сообщения: 274
Зарегистрирован: 04 апр 2009, 15:36
Откуда: Украина(Донецк)
  • ICQ

Re: Передача параметра от PHP в Unity(Активно)

Сообщение mentors 15 апр 2011, 01:54

][@FF писал(а):я знаю что такое куки =) мне больше интересно как с ним работать, ссылочку что ли или примерчик наглядный было бы не плохо

По кукисам и сессиям в любом учебнике по php и js море информации. Как устанавливать, удалять и изменять - это азбука, информации море, вплоть до полного разжевывания... Не поленитесь попросить помощи у google. Просто нет смысла описывать то, что и так тысячи раз описано.
Насчет того, как использовать, все просто, из Js записываете в определенные в куках переменные данные, и храните их сколько хотите... Максимальное время хранения куков - довольно большое, и при каждой сессии пользователя их можно продлевать...
Еще рекомендую обратить внимание на Ajax, с ним можно существенно расширить возможности Ваших приложений в броузере.
Только вот еще один момент вам к размышлению, cookie - по сути текстовой файл который легко читается и находится, при не правильном обращении, может подставить не только данные в них самих, но и безопасность сервера под угрозу взлома. Прежде чем браться за них - продумайте меры безопасности и защиту от прямого изменения cookie файлов.
В качестве защиты рекомендую избыточные данные и ключи проверки ручного изменения файлов. Меня например всегда выручают методы вроде нестандартных последовательностей, собственные системы пересчета и сравнения данных... Но не стоит забывать и еще одну истину: "Если вашу защиту решили взломать, рано или поздно - ее взломают"...
Аватара пользователя
mentors
UNITрон
 
Сообщения: 309
Зарегистрирован: 20 мар 2011, 19:32
Откуда: Россия

Re: Передача параметра от PHP в Unity(Активно)

Сообщение ][@FF 15 апр 2011, 15:54

нашел интересную статейку про то как можно передавать значения из страницы в юнити, но у меня почему то не выводит путь никуда не выводит... и не понимаю что тут можно сделать не правильно, но не работает, если кому не трудно проверьте и отпишитесь, работает ли вообще этот способ, если не трудно
viewtopic.php?f=87&t=3345&p=28316&hilit=unityObject.getObjectById#p28316
Аватара пользователя
][@FF
UNIт
 
Сообщения: 62
Зарегистрирован: 24 фев 2011, 20:02
  • ICQ

След.

Вернуться в Скрипты

Кто сейчас на конференции

Сейчас этот форум просматривают: Yandex [Bot] и гости: 5