UnAPI - враппер функций ВКонтакте API для Unity

Лучший способ помочь другим, поделиться своими находками.

Re: UnAPI - враппер функций ВКонтакте API для Unity

Сообщение D.Silver 06 июл 2013, 23:44

там вроде в пакете есть небольшая документация

Да там хорошо коменты по коду стоят, я все пересмотрел. Кое-что понял, кое с чем разбирался за счет документации Вк и гугла.

Но мне как нубу сложно во-первых потому что там шарп, а я в юньке все на яве пишу. Во-вторых, интересуют не готовые решения а принцип, я понимаю что можно послать меня учить Си, или но поэтому тут и пишу, что не знаю где еще могут быть ребята которые могут мне объяснить базу =)

Вот у нас есть штмл с юнькой, кладем его в Вк как Айфрейм приложение. Туда что-то дописывать нужно? Что? И что за что в ответе. Далее отдельно какие-то файлы (пхф, штмл) писать нужно? Или все теперь из юньки пойдет?
Если из нее то вот элементарно как послать запрос и получить ответ. (на яве, не Си, хотя тут хотя бы объяснить че куда я сам додумаю). Заглядывать потом в справку методов вк.апи я и сам смогу.

оххх... не знаю как еще объяснить что я прошу чтобы объяснили мне =)

я юньку не плохо знаю, не школота желающая сделать мморпг на каникулах, но вот тут хоть ты тресни я попросту запутался.
D.Silver
UNец
 
Сообщения: 24
Зарегистрирован: 03 фев 2011, 23:48

Re: UnAPI - враппер функций ВКонтакте API для Unity

Сообщение newArray 06 июл 2013, 23:47

А это типа читал viewtopic.php?f=13&t=17008
все по одним и тем же принципам. там 2 типа - методы и просто получение переменной.

http://unity3dscripts.16mb.com/forum/ge ... 77/#msg177

Ну короче вконтакте ж адрес страницы тупо спрятан. но на самом делетам куча всякой хрени в нем и вот метод полученияид контакта это то что мы обращаемся просто к настоящему адресу страницы который содержит ид юсера его секретный пасворд и еше там че то. вобщем тупо парситься с адреса страницы и получи пожалуста.

var parts=document.location.search.substr(1).split("&");

из раздела общее - вот без этого вообще api работать не будет. это ставим в html в первую очередь

<script src="http://vk.com/js/api/xd_connection.js?2" type="text/javascript"></script>
newArray
Адепт
 
Сообщения: 1226
Зарегистрирован: 14 фев 2013, 07:03
Откуда: оттуда

Re: UnAPI - враппер функций ВКонтакте API для Unity

Сообщение D.Silver 07 июл 2013, 18:18

Спасибо очень помогло! Многое понял. Протестил, все работает. Достаточно понятно было объяснено.

Теперь только понять что писать внутри юньки чтобы вытащить инфу о юзере?) Можно ли со всем апи вк общаться не покидая юнити? Т.е не внося больше никаких правок в html файл ?
Вот этого еще понять не могу.

Application.ExternalEval выполняет любой ява скрипт? Внутри этого html ? Т.е теперь внутри юньки, достаточно этой "штуки"? Чтобы общаться с вк.апи ?
D.Silver
UNец
 
Сообщения: 24
Зарегистрирован: 03 фев 2011, 23:48

Re: UnAPI - враппер функций ВКонтакте API для Unity

Сообщение newArray 07 июл 2013, 18:43

да опять же из моего примера на форуме во втором сообщении выделено жирным шрифтом - вот что я имел ввиду:

Application.ExternalEval(" document.getElementById('unityPlayer').style.visibility = 'hidden'; VK.addCallback('onOrderFail', function() {document.getElementById('unityPlayer').style.visibility = 'visible';}); ");

то есть вместо того чтобы писать джава скрипт на веб странице пишем его прямо в юнити вот таким образом. но тут мы функций не объявляем (например order) то есть функция сразу выполняется в этом куске кода
newArray
Адепт
 
Сообщения: 1226
Зарегистрирован: 14 фев 2013, 07:03
Откуда: оттуда

Re: UnAPI - враппер функций ВКонтакте API для Unity

Сообщение D.Silver 07 июл 2013, 23:27

Твоя та тема мне очень существенно помогла (вот еще спустя время).
Это я понял что ты говоришь.

Через Application.ExternalEval я могу выполнить ява скрипт, в нем же обращение к вк.Апи.

Не понимаю как в юньку обратно получить данные не имея при этом функции в html. Т.е у тебя там "моя функция" которая передает в юньку сообщение об успешной (или не успешной) покупке написана в html.

Вот что я пока понял (перековыряв чужой врапер Сишный который тут раздают на форуме).

Что чтобы не покидать юньку все может выглядеть вот так:

Application.ExternalEval (

- - Какой-то вебовский ява скрипт, обращаемся к вк.Апи

Теперь чтобы вернуть в юньку какие-то данные используем вот этот метод unity.SendMessage не покидая рамки Application.ExternalEval

)

Я верно мыслю?)
D.Silver
UNец
 
Сообщения: 24
Зарегистрирован: 03 фев 2011, 23:48

Re: UnAPI - враппер функций ВКонтакте API для Unity

Сообщение newArray 08 июл 2013, 00:56

Да правильно - ты можешь принять обратный ответ call back от апи контакта не покидая юнити. через external eval

при простой работе с окнами контакта это может выглядеть так

Application.ExternalEval("document.getElementById('unityPlayer').style.visibility = 'hidden'; VK.api('wall.post',{message:'ололо'}, function(data){if(data.response){document.getElementById('unityPlayer').style.visibility = 'visible';} else{document.getElementById('unityPlayer').style.visibility = 'visible';}})");

это те примеры где они дают пример возврата function(data) это не callback
newArray
Адепт
 
Сообщения: 1226
Зарегистрирован: 14 фев 2013, 07:03
Откуда: оттуда

Re: UnAPI - враппер функций ВКонтакте API для Unity

Сообщение D.Silver 08 июл 2013, 05:56

ага, это я уже понял. Я понять не мог (за ночь эту проблему решил :) ) как получать данные
Как вариант не мог понять как получить ИД того кто в приложении. Как полез в гугл а там же ужаааас! Куча кода в веб нужно всовывать, мудрить шаманить...

Так как я в первую очередь контентщик а не кодер, меня это естественно не устроило, поэтому я продолжил поиски и пришел вот к такому результату

Синтаксис:
Используется javascript
         Application.ExternalEval(
        "VK.loadParams(document.location.href);                                         " +
        "var viewer_id = VK.params.viewer_id;                                           " +
        " u.getUnity().SendMessage('Object', 'parametrs', viewer_id); "

    );

 


Именно вот это меня интересовало и понять не мог принцип. Теперь то таким образом я смог получить всю инфу о профиле, друзьях. Там еще есть в настройках приложения поле "Первый запрос к Апи", там удобно сделать все основные запросы а потом получить их в переменно апи_резултс.

Кода минимум, все работает, не трогай! (с) :ymparty:

п.с Это на случай если кто-то с гугла придет в эту тему.

Кстати я так и не понял почему чтобы узнать тот же viewer_id, имя, аву и т.д (т.е общею инфу). В 99% инфы которую я нашел советуют какие-то геморойные пути методом кода в html-е через flashVars вытаскивать их. Вот этого смысла я так и не уловил. Ну да пофигу, главное что я наконец понял как это на самом деле работает =) Теперь уже будет чуть по проще, а то до этого вообще не понимал, смотрел в код и видел там "какой-то чужой синтаксис" =)
D.Silver
UNец
 
Сообщения: 24
Зарегистрирован: 03 фев 2011, 23:48

Re: UnAPI - враппер функций ВКонтакте API для Unity

Сообщение newArray 08 июл 2013, 10:18

Абсолютно правильно. Зачем брать ай ди из адреса страницы если можно получить его через апи одной строкой в юнити.
newArray
Адепт
 
Сообщения: 1226
Зарегистрирован: 14 фев 2013, 07:03
Откуда: оттуда

Re: UnAPI - враппер функций ВКонтакте API для Unity

Сообщение proton667 22 июл 2013, 15:39

Получение имени и т д из метода users.get http://vk.com/developers.php?oid=-1&p=users.get
Если мы имеем viewer_id
Здесь делаем на инициализации апи
Синтаксис:
Используется javascript
 VK.init(function()
                {
                    var parts=document.location.search.substr(1).split("&");
                    var flashVars={}, curr;
                    for (i=0; i<parts.length; i++)
                    {
                        curr = parts[i].split('=');
                        flashVars[curr[0]] = curr[1];
                    }
                    var viewer_id = flashVars['viewer_id'];
                    alert(viewer_id);
                    var user_name;
                    VK.api("users.get",{uids:viewer_id} ,function (data)
                    {
                        user_name = data.response[0].first_name;
                        alert(user_name);
                    });
                });


Но учтите что var user_name; должна быть глобалкой. иначе если так как сейчас то обратно в юнити переменную надо передавать внутри скобок

Синтаксис:
Используется javascript

 VK.api("users.get",{uids:viewer_id} ,function (data)
 {
  user_name = data.response[0].first_name;
 
  alert(user_name);
    u.getUnity().SendMessage("object", "function", user_name);

  });

 
Скрытый текст:
но вино будет
.
proton667
UNIт
 
Сообщения: 144
Зарегистрирован: 20 июл 2013, 12:40

Re: UnAPI - враппер функций ВКонтакте API для Unity

Сообщение kolya9898 25 июл 2013, 11:07

как мне в c# получить айди и аутч кей?
я непонимаю что там написано! [curved_hands]
Изображение
Аватара пользователя
kolya9898
UNITрон
 
Сообщения: 333
Зарегистрирован: 15 июл 2013, 19:28
Откуда: Челябинск
Skype: kolyan9898

Re: UnAPI - враппер функций ВКонтакте API для Unity

Сообщение Diab10 25 июл 2013, 11:43

kolya9898 писал(а):как мне в c# получить айди и аутч кей?
я непонимаю что там написано! [curved_hands]


Зачем тебе это? Ты же программировать не умеешь. Ну подскажут тебе, и что дальше с этим будешь делать? Потом спросишь как регистрацию или чат делать?
Учись программированию.
Аватара пользователя
Diab10
Адепт
 
Сообщения: 3401
Зарегистрирован: 17 мар 2011, 20:42
Откуда: 123 RUS
Skype: diab1023

Re: UnAPI - враппер функций ВКонтакте API для Unity

Сообщение kolya9898 26 июл 2013, 14:05

Мне дай код как получить ид и аутч, а регистрация и авторизация уже сделана!
P.S делал на заданных параметрах var, теперь надо получать ид и аутч игроков, т.к без них нечего не будет
Изображение
Аватара пользователя
kolya9898
UNITрон
 
Сообщения: 333
Зарегистрирован: 15 июл 2013, 19:28
Откуда: Челябинск
Skype: kolyan9898

Re: UnAPI - враппер функций ВКонтакте API для Unity

Сообщение bomberest 27 июл 2013, 00:57

Странно, но у меня никак не получается добиться инициализации.
Скрытый текст:
<script type="text/javascript" src="http://vk.com/js/api/xd_connection.js?2"></script>
<script type="text/javascript">
<!--

//--------------Инициализация Unity Web Player---------------
function GetUnity()
{
if (typeof unityObject != "undefined")
{
return unityObject.getObjectById("unityPlayer");
}
return null;
}

if (typeof unityObject != "undefined")
{
unityObject.embedUnity("unityPlayer", "Sandbox.unity3d", 805, 575);
}
//-----------------------------------------------------------

Го в сцене висит. Но я не могу добиться НИКАКОЙ реакции.
Основы Unity3D Свой 2D-движок Фильм для разработчиков Кастомизация едитора
Лекции игрового программирования
Skype: Andrewf56 | Steam: bomberest (-AnF-) | Vk: _https://vk.com/andrewshut
Аватара пользователя
bomberest
Старожил
 
Сообщения: 538
Зарегистрирован: 22 июн 2011, 14:38
Откуда: Минск
  • ICQ

Re: UnAPI - враппер функций ВКонтакте API для Unity

Сообщение proton667 27 июл 2013, 03:36

Честно говоря я вот этим VK.init(function() на штмл странице никогда не пользовался. Я просто запускал из юнити функцию на штмл странице

Да типа такого function GetSome() но запускаю ее из скрипта юнити на старте.
Скрытый текст:
но вино будет
.
proton667
UNIт
 
Сообщения: 144
Зарегистрирован: 20 июл 2013, 12:40

Re: UnAPI - враппер функций ВКонтакте API для Unity

Сообщение Ert Donuell 27 июл 2013, 15:14

UnityObject2 использует другие методы. Этот код решит проблему:

Синтаксис:
Используется xhtml
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
    <head>
        <title>Unity Web Player | "Cold fire"</title>
        <script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
        <script type="text/javascript" src="http://vk.com/js/api/xd_connection.js?2"></script>
        <script type="text/javascript">
            var unityObjectUrl = "http://webplayer.unity3d.com/download_webplayer-3.x/3.0/uo/UnityObject2.js";
            if (document.location.protocol == 'https:')
                unityObjectUrl = unityObjectUrl.replace("http://", "https://ssl-");
            document.write('<script type="text\/javascript" src="' + unityObjectUrl + '"><\/script>');
        </script>
        <script type="text/javascript">
            window.onload = function ()
            {
                VK.init({ apiId: тут_ID_приложения });
            };
            var config = {
                width: 960,
                height: 600,
                params: { enableDebugging:"1" }
            };
            config.params["disableContextMenu"] = true;
            var u = new UnityObject2(config);
            u.observeProgress(
                function (progress)
                {
                    var $missingScreen = jQuery(progress.targetEl).find(".missing");
                    switch(progress.pluginStatus)
                    {
                        case "unsupported":
                            showUnsupported();
                            break;
                        case "broken":
                            alert("You will need to restart your browser after installation.");
                            break;
                        case "missing":
                            $missingScreen.find("a").click(
                                function (e)
                                {
                                    e.stopPropagation();
                                    e.preventDefault();
                                    u.installPlugin();
                                    return false;
                                }
                            );
                            $missingScreen.show();
                            break;
                        case "installed":
                            $missingScreen.remove();
                            break;
                        case "first":
                            break;
                    }
                }
            );
            jQuery(
                function()
                {
                    u.initPlugin(jQuery("#unityPlayer")[0], "Sandbox.unity3d");
                }
            );
            function GetUnity()
            {
                return u.getUnity();
            }
        </script>
        <style type="text/css">
            body {
                font-family: Helvetica, Verdana, Arial, sans-serif;
                background-color: white;
                color: black;
                text-align: center;
            }
            a:link, a:visited {
                color: #000;
            }
            a:active, a:hover {
                color: #666;
            }
            p.header {
                font-size: small;
            }
            p.header span {
                font-weight: bold;
            }
            p.footer {
                font-size: x-small;
            }
            div.content {
                margin: auto;
                width: 960px;
            }
            div.broken, div.missing {
                margin: auto;
                position: relative;
                top: 50%;
                width: 193px;
            }
            div.broken a, div.missing a {
                height: 63px;
                position: relative;
                top: -31px;
            }
            div.broken img, div.missing img {
                border-width: 0px;
            }
            div.broken {
                display: none;
            }
            div#unityPlayer {
                cursor: default;
                height: 600px;
                width: 960px;
            }
        </style>
    </head>
    <body>
        <p class="header">
            <span>Unity Web Player | </span>Cold fire
        </p>
        <div class="content">
            <div id="unityPlayer">
                <div class="missing">
                    <a href="http://unity3d.com/webplayer/" title="Unity Web Player. Install now!">
                        <img alt="Unity Web Player. Install now!" src="http://webplayer.unity3d.com/installation/getunity.png" width="193" height="63" />
                    </a>
                </div>
            </div>
        </div>
        <p class="footer">&laquo; created with <a href="http://unity3d.com/unity/" title="Go to unity3d.com">Unity</a> &raquo;</p>
    </body>
</html>
Добавить dmitrii.baranov.yumasoft в Skype
Аватара пользователя
Ert Donuell
Старожил
 
Сообщения: 781
Зарегистрирован: 05 июл 2010, 09:50
Откуда: Санкт-Петербург
  • ICQ

Пред.След.

Вернуться в Исходники (Копилка)

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

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