Unity3d IFrame получить параметр из ссылки на приложение

Общие вопросы о Unity3D

Unity3d IFrame получить параметр из ссылки на приложение

Сообщение qmaks 29 окт 2011, 00:19

У меня есть айфрейм страничка, в ней запускается Юнити. Допустим я хочу сделать ссылки вида
http://vkontakte.ru/app666?myparam=2314123

Как мне в коде странички получить параметр myparam и передать Юнити плееру? Я не веб программист возможно вопрос нубский, но самому не получается разобраться.

Код: Выделить всё
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title>Мое приложение</title>
    <script src="http://vk.com/js/common.js" type="text/javascript"></script>
    <script src="http://vk.com/js/xd_connection.js" type="text/javascript"></script>
    <script src="/scripts/unityobject.js" type="text/javascript"></script>
    <script src="/scripts/vk_api.js" type="text/javascript"></script>
 
</head>
<body>
 
    <!--<script src="http://vk-jsapi.googlecode.com/svn/trunk/vk_api.min.js" type="text/javascript"></script>-->
    <center>
        <div id="ss_game" style="z-index: -100">
        </div>
    </center>
 
 
    <script type="text/javascript">        //<![CDATA[
        var uniObj;
 
        function createUnityObject() {
            uniObj = new UnityObject("fw_vkontakte_6.unity3d", "game", "800", "600");
            //uniObj.addParam("logoimage", "MyLogo.png");
            //uniObj.addParam("progressbarimage", "MyProgressBar.png");
            //uniObj.addParam("progressframeimage", "MyProgressFrame.png");
            uniObj.addParam("disableContextMenu", "true");
            uniObj.addParam("disableFullscreen", "true");
            uniObj.setAttribute("altHTML", "<a href='http://webplayer.unity3d.com/download_webplayer-3.x/UnityWebPlayer.exe' title='Перейти на unity3d.com для установки Unity Web Player'>Установить Unity Web Player</a>");
            uniObj.write('ss_game');
        }
 
        var api = new vk_api(
        '000000000000000000000',
        function()
        {
            api.callMethod('setTitle', 'Мое приложение');
            api.addCallback('onWindowBlur', function(settings) { document.getElementById('ss_game').style.display = 'none'; });
            api.addCallback('onWindowFocus', function(settings) { document.getElementById('ss_game').style.display = 'block'; });
            api.addCallback('onSettingsChanged', function(settings) { document.getElementById('ss_game').style.display = 'block'; });
            createUnityObject();
        },
        function() { document.getElementById('text').innerHTML += 'Ошибка инициализации API\n'; },
    true);
   
        // Функция вызываемая плеером для получения параметров, необходимых для работы с API ВКонтакта
        function SendSettingsToPlayer()
        {
            uniObj.msg("VkontakteAPI", "SetApiUrl", api.params.api_url);
            uniObj.msg("VkontakteAPI", "SetAppId", api.params.api_id);
            uniObj.msg("VkontakteAPI", "SetViewerId", api.params.viewer_id);
            uniObj.msg("VkontakteAPI", "ApiInitialized");
        }
 
        //]]></script>
 
</body>
</html>
qmaks
UNIт
 
Сообщения: 57
Зарегистрирован: 03 окт 2010, 23:07

Re: Unity3d IFrame получить параметр из ссылки на приложение

Сообщение leksasmile 01 ноя 2011, 08:19

Не знаю поможет моя информация или нет, но я так же столкнулся с подобной задачей. Мой iFrame был написан на ASP.NET MVC, в контроллере айфрейма (в методе GET) я читал параметры из QueryString - это коллекция всех параметров, имеющихся в строке адреса. В вашем случае это будет коллекция с одним элементом - ключ "myparam" и значение "314123". вот мой пример кода:

Синтаксис:
Используется csharp
 public ActionResult Index()
        {
            string allQuery = string.Empty;
//перебрать все значения и составить строку, которую уже в юнити распарстить по символу-разделителю ($)
            foreach (string key in Request.QueryString.Keys)
            {
                allQuery += key + "$" + Request.QueryString[key] + "|";
            }
            ViewData["allQuery"] = allQuery;
            return View();
        }

Далее я из самой юнити дергаю функцию айфрейма, которая возвращает необходимые мне параметры (составленную выше строку)
Вот сама функция:
Синтаксис:
Используется javascript
 <script type = "text/javascript">
         
         function GetParams()
         {
             var unity = unityObject.getObjectById("unityPlayer");
//Компонент (класс), метод, аргумент (наша сборная строка из QueryString)
             unity.SendMessage("Login", "GetAppParams", "@ViewData["allQuery"].ToString()");
         }
        </script>

Эта функция в свою очередь вызывает метод в юнити и передает нужные данные.
Аватара пользователя
leksasmile
UNец
 
Сообщения: 12
Зарегистрирован: 08 сен 2011, 13:44

Re: Unity3d IFrame получить параметр из ссылки на приложение

Сообщение forsake 06 ноя 2011, 23:36

параметры можно парсить в самом юнити посредством HttpUtility.ParseQueryString, а url передать таким же способом, как передаете параметры инициализации апи вконтакте: uniObj.msg("SomeObject", "SomeMethod", location.href);
forsake
UNец
 
Сообщения: 8
Зарегистрирован: 10 фев 2011, 13:31


Вернуться в Общие вопросы

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

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 17


cron