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

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

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

Сообщение eric 15 апр 2011, 16:37

][@FF писал(а):нашел интересную статейку про то как можно передавать значения из страницы в юнити, но у меня почему то не выводит путь никуда не выводит... и не понимаю что тут можно сделать не правильно, но не работает, если кому не трудно проверьте и отпишитесь, работает ли вообще этот способ, если не трудно
viewtopic.php?f=87&t=3345&p=28316&hilit=unityObject.getObjectById#p28316


Начните с проверки через вывод алерта в js страницы - быстро найдете что срабатывает , а что нет. (если путь js->unity )
Или с того же изменения отображаемой переменной в webplayer в OnGUI (если не возиться с RegisterLogCallback) это если вызываете js на странице из unity

Надеюсь теги типа "<span" вы понимаете где должны быть а где нет? Воспользуйтесь отладчиками js ( в хроме, в firefox) если понадобиться.
eric
UNец
 
Сообщения: 38
Зарегистрирован: 12 июн 2010, 12:35

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

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

ошибка в

Синтаксис:
Используется javascript
<script type="text/javascript" language="javascript">

                <!--

                function SayHello( arg )

                {

                    // show the message

                    // alert( arg );

                    var unity = <span class="posthilit">unityObject.getObjectById</span>("unityPlayer");

                    unity.SendMessage("Logic", "MyFunction", document.location.href);

                }

                -->

                </script>
 


если я правильно понял то в
var unity = <span class="posthilit">unityObject.getObjectById</span>("unityPlayer");

ругается на "<" вот в этом месте </span>

Надеюсь теги типа "<span" вы понимаете где должны быть а где нет?
Я вас разочарую, но нет не знаю.

когда пытаюсь поменять <!-- код2 --> на <![CDATA[ код2 ]]>
ошибка уже на <![CDATA[ и так же на <

возможно ли что ошибка возникает от нескольких используемых javascript?
Синтаксис:
Используется javascript
<script type="text/javascript" src="UnityObject.js"></script>
<script type="text/javascript">код1</script>
<script type="text/javascript" language="javascript">код2</script>
Аватара пользователя
][@FF
UNIт
 
Сообщения: 62
Зарегистрирован: 24 фев 2011, 20:02
  • ICQ

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

Сообщение eric 15 апр 2011, 18:00

Ошибка возникает от неправильного синтаксиса.
Уберите "<span" и "</span>" в функции "SayHello"

По коммуникации между unity и браузером вам будет лучше тут почитать:

http://unity3d.com/support/documentation/Manual/Unity%20Web%20Player%20and%20browser%20communication.html
eric
UNец
 
Сообщения: 38
Зарегистрирован: 12 июн 2010, 12:35

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

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

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

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

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

И так = ) Еще раз спасибо тем кто помогал.
1) в нашей пхп странице (index.php) (немного переделанной HTML, которая создается при билде веба, в ней заменили все " на ' и поместили весь получившийся код в echo "")
добавляем строчки $pLevel=$_GET["ourparamlevel"];(наши загружаемые проекты с комнатой) и $pMCamPos = $_GET["mcampos"]; (наши позиции камер)
<!php
$pLevel=$_GET["ourparamlevel"];
$pMCamPos = $_GET["mcampos"];
echo "код страницы"
!>
в коде страницы ищем строчку
unityObject.embedUnity('unityPlayer', 'WebPlayer.unity3d', 6800, 600, params);
и меняем ее на
unityObject.embedUnity('unityPlayer', '".$pLevel.".unity3d', 800, 600, params);
где '".$pLevel."(наш передаваемый параметр проекта с комнатой).unity3d'(расширение файла, ммм, изначально выглядевшего как WebPlayer.unity3d)
800 и 600 размер окошка который будет на странице

далее добавляем (я добавил сразу после скрипта обрабатывающего unityPlayer)

Синтаксис:
Используется javascript
<script type='text/javascript' language='javascript'>
                <!--
                function fTransferCamPos( arg )
                 {
                    // show the message
                    // alert( arg );
                    var unity = unityObject.getObjectById('unityPlayer');
                     unity.SendMessage('AnyGameObject', 'CsFTransferCamPos', '$pMCamPos');
                }
                -->
                </script>

где AnyGameObject - любой объект сцены (лучше бы наверно создавать простой "Create Empty")
CsFTransferCamPos - функция в С# в которую мы будем передавать значение с положением камеры
$pMCamPos - положение нашей камеры

2) Создаем C# скрипт (название скрипта любое на ваше усмотрение, у меня - MMH (уже не помню почему = )) ) (в него мы будем передавать все значения положения камер в проектах)
Синтаксис:
Используется csharp
using UnityEngine;
using System.Collections;

public class MMH : MonoBehaviour
{
    public string myCamPos; //строковое значение положения камеры
    GameObject GMainCam; // камера персонажа
//здесь мы передаем из пхп страницы из джавы через функцию строковое значение положения камеры
    public void CsFTransferCamPos(string someString)
    {
        myCamPos = someString;
    }

    void Awake()
    {
        Application.ExternalCall("fTransferCamPos", ""); // функция передаваемая из пхп страницы в джаваскрипте
        GMainCam = GameObject.Find("MainCam"); // камера персонажа
    }
    void Start ()
    {

    }

    void Update ()
    {
// в зависимости от значения myCamPos перемещаем камеру персонажа в любую точку сцены
        if (myCamPos == "0") // положение камеры в первом проекте (сцене)
        {
            GMainCam.transform.position = new Vector3(0f, 5f, -4f);
            myCamPos = ""; // сразу же обнуляем значение чтобы наша камера не зависла в воздухе (падаем на пол = ))
        }
        if (myCamPos == "1")// положение камеры во втором проекте (сцене)
        {
            GMainCam.transform.position = new Vector3(0f, 10f, -4f);
            myCamPos = "";
        }
     }
}


3) создаем C# скрипт (название любое) передачи параметров комнаты и камеры
Синтаксис:
Используется csharp
using UnityEngine;
using System.Collections;

public class Temp1 : MonoBehaviour
{
    void Awake()
    {
 
    }
        // Use this for initialization
    void Start ()
    {

    }
    void OnMouseDrag()
    {
        if (name == "MyCub") // если при нажатии на объект с коллайдером, имя объекта равно MyCub
        {
            Application.OpenURL("http://MySite/MuseyGame/index.php?ourparamlevel=room2&mcampos=1"); //передаем параметр проекта и параметр положения камеры
        }
        if (name == "mycub2")
        {
            Application.OpenURL("http://MySite/MuseyGame/index.php?ourparamlevel=room1&mcampos=0");
        }
    }
}


4) создаем две сцены
в первой создаем "Create Empty" даем ему название AnyGameObject и вешаем на него скрипт MMH
в ней же создаем камеру персонажа MainCam
в ней же создаем объект mycub2 (с колайдером) к нему прицепляем скрипт Temp1

во второй создаем "Create Empty" даем ему название AnyGameObject и вешаем на него скрипт MMH
в ней же создаем камеру персонажа MainCam
в ней же создаем объект MyCub (с колайдером) к нему прицепляем скрипт Temp1

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

Пред.

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

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

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