Четверг, 26 Декабря 2024, 15:21

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
Вопрос-[ответ] по Unity
QWER56Дата: Понедельник, 09 Августа 2010, 10:58 | Сообщение # 1
старожил
Сейчас нет на сайте
Вопрос-[Ответ] по Unity3d

  • База скриптов Unity3d
  • Курс Уроков по Unity 3D от Alcatraz

    ConsMark - поисковик по интернет магазинам.

    Сообщение отредактировал QWER56 - Вторник, 26 Июля 2011, 20:54
  • GameBitДата: Понедельник, 27 Июня 2016, 06:44 | Сообщение # 7921
    был не раз
    Сейчас нет на сайте
    Вопрос про поиск цены в OpenIAB... Inventory.GetSkuDetails(SKU).Price должно выдавать стоимость покупки, однако Unity ругается An object reference is required to access non-static member `OnePF.Inventory.GetSkuDetails(string). GetSkuDetails сделать static не получается(ругаются другие скрипты).Вопрос- как можно сделать ссылку на GetSkuDetails из скрипта на сцене?
    LertmindДата: Понедельник, 27 Июня 2016, 11:09 | Сообщение # 7922
    заслуженный участник
    Сейчас нет на сайте
    GameBit, пример проекта видел OpenIAB-sample-game? Так вот в ShopDemo.cs видим:
    Код
    private void OnBillingSupported()
    {
        Debug.Log("Billing is supported");
        OpenIAB.queryInventory(new string[] { SKU_PREMIUM_SKIN, SKU_GOD_MODE, SKU_REPAIR_KIT });
    }

    OpenIAB.queryInventory() позволяет сделать запрос со списком SKU, которые нужны, а в обработчике события ниже получаем список продуктов:
    Код
    private void OnQueryInventorySucceeded(Inventory inventory)
    {
        Debug.Log("Query inventory succeeded: " + inventory);
        // ...
    }

    В этом методе можно написать:
    Код
    inventory.GetSkuDetails(SKU).Price

    OpenIAB.queryInventory() можно вызывать в любом месте кода, после чего получать список через обработчик, а OnBillingSupported() вызывается в OpenIAB.init(options);, то есть в данном примере при инициализации сразу получаем список продуктов.
    Разбирался только с помощью поиска и исходников, не проверял в проекте, но работать должно.
    БозингарДата: Вторник, 28 Июня 2016, 10:33 | Сообщение # 7923
    почетный гость
    Сейчас нет на сайте
    Активация GUI из GUI, возможно-ли? Типа такого (код условный):
    Код

    if (GUI.Button (new Rect (0, 0, 100, 20), "Click")) {
       GUILayout.Label (texture);
      }

    Однако, результата ноль (догадываюсь, почему). Некогда решал эту проблему, создавая пустой неактивный объект, вешая на него скрипт с нужным гуем и... Ну, в общем, понятно. Теперь хотелось-бы разобраться в GUI лучше.

    _____________

    Так, вижу, такое можно осуществить булем, вроде:
    Код
    if (GUI.Button (new Rect (0, 0, 100, 20), "Click")) {
    bool Click = true; }

    if (Click == true) {
    GUILayout.Label (texture);
    }

    Но метод выглядит малость костыльным, загружает код лишними условиями. Ещё варианты?


    #Хийвэл бүү ай, айвал бүү хий.

    Сообщение отредактировал Бозингар - Вторник, 28 Июня 2016, 10:42
    LertmindДата: Вторник, 28 Июня 2016, 11:37 | Сообщение # 7924
    заслуженный участник
    Сейчас нет на сайте
    Бозингар, вариант с условиями подходит в простых ситуациях. В "UI" такой проблемы нет, там можно просто включать/отключать объекты, что похоже на то, что ты делал, то есть изобретал велосипед, вместо того чтобы пользоваться современных "UI". Мог бы пойти дальше: сделать универсальные скрипты для каждого элемента интерфейса и объединять их с помощью GameObject.
    ShortKedrДата: Вторник, 28 Июня 2016, 11:47 | Сообщение # 7925
    Renword Studio
    Сейчас нет на сайте
    Бозингар, if срабатывает на true только при нажатии твоей кнопки, а это длится долю секунды,то есть ты ничего не увидишь. Вещай какой нибудь check на это всё, переменную bool, например public bool drawTexturePanel.

    Цитата Бозингар ()
    Но метод выглядит малость костыльным

    Что значит костыльный, это то, как и должно быть, не хотите кучу bool - делайте Hashtable своих или ещё каких псевдо bool классов и храните всё в одной хеш таблице.
    В общем то GUI обычно, в серьёзных проектах не используется кучей кода в одном скрипте, а подразделяется на классы и функции(когда значимость элемента не столь велика), обычно классы:



    P.S. Вообще, если вы не программист и не хотите в этом разбираться, то используйте UI

    Добавлено (28 июня 2016, 11:47)
    ---------------------------------------------
    Lertmind, кто нибудь догадался пропатчить стандартный CanvasScaler парой строчек кода?)
    Мягко сказать, его растяжение не везде ахти, к примеру на 16:9 всё норм, но вот при обратной 9:16 всё разлезется(или взять те же квадратные мониторы)

    Вот небольшой патч, который появился у RW при переходе на UI:


    Сообщение отредактировал ShortKedr - Вторник, 28 Июня 2016, 11:55
    GameBitДата: Четверг, 30 Июня 2016, 05:33 | Сообщение # 7926
    был не раз
    Сейчас нет на сайте
    Установил Unity 4.3.5 и скрипты перестали работать на андроиде а в редакторе стали бледными. Как исправить? Буду благодарен за помощь)


    Сообщение отредактировал GameBit - Четверг, 30 Июня 2016, 05:35
    berilДата: Четверг, 30 Июня 2016, 08:08 | Сообщение # 7927
    Я не ленивый, я — энергосберегающий
    Сейчас нет на сайте
    Ребята где хранятся PlayerPrefs в WebGl проекте ? как их почистить из IndexedDB ?
    Пока сделал только PlayerPrefs.DeleteAll(); на секретную кнопку, хоть так пусть будет )




    Накодил? Убери за собой!
    Инвентарь в Unity(UI)
    Инвентарь в Unity(GUI)
    seamanДата: Четверг, 30 Июня 2016, 09:00 | Сообщение # 7928
    старожил
    Сейчас нет на сайте
    НУ как я понимаю IndexedDB в каждом браузере может быть реализован по своему. Поэтому где расположена база - неважно. Нужно использовать API IndexedDB - это будет кроссбраузерно.
    https://www.w3.org/TR/IndexedDB/
    berilДата: Четверг, 30 Июня 2016, 09:08 | Сообщение # 7929
    Я не ленивый, я — энергосберегающий
    Сейчас нет на сайте
    Цитата seaman ()
    НУ как я понимаю IndexedDB в каждом браузере может быть реализован по своему. Поэтому где расположена база - неважно. Нужно использовать API IndexedDB - это будет кроссбраузерно.
    https://www.w3.org/TR/IndexedDB/

    Спасибо, но вроде PlayerPrefs.DeleteAll() норм работает biggrin Будет время попробую разобраться с IndexedDB




    Накодил? Убери за собой!
    Инвентарь в Unity(UI)
    Инвентарь в Unity(GUI)
    STRATEG766Дата: Суббота, 02 Июля 2016, 18:58 | Сообщение # 7930
    частый гость
    Сейчас нет на сайте
    Есть 2 объекта. Чтобы они не сталкивались, я создал 2 Layera и снял галочки в Edit=> Project Settings=>Physics 2D. А как это сделать в скрипте? Например есть переменная bool, и если она равна true, то эти объекты не сталкивались .

    Сообщение отредактировал STRATEG766 - Суббота, 02 Июля 2016, 18:59
    LertmindДата: Суббота, 02 Июля 2016, 19:23 | Сообщение # 7931
    заслуженный участник
    Сейчас нет на сайте
    STRATEG766, Physics2D.IgnoreCollision - для конкретных коллайдеров, Physics2D.IgnoreLayerCollision - для слоёв.
    STRATEG766Дата: Суббота, 02 Июля 2016, 19:45 | Сообщение # 7932
    частый гость
    Сейчас нет на сайте
    Цитата Lertmind ()
    Physics2D.IgnoreCollision - для конкретных коллайдеров, Physics2D.IgnoreLayerCollision - для слоёв.

    Спасибо
    mastersmitДата: Среда, 06 Июля 2016, 08:10 | Сообщение # 7933
    был не раз
    Сейчас нет на сайте
    Вопросец небольшой..
    Имеем 1 модель монитора. Имеем 1 атлас с 4 текстурами в ней (экраны). Ну и имеем 1 текстуру для корпуса.
    Вот как лучше поступить?
    1. 1 модель, 1 текстура атлас, 4 мата с разными оффсетами = 4 префаба.
    2. 4 модели, 1 текстура атлас, 1 мат = 4 префаба.

    2 вариант оказался выгоднее.


    Сообщение отредактировал mastersmit - Среда, 06 Июля 2016, 09:34
    БозингарДата: Среда, 06 Июля 2016, 16:47 | Сообщение # 7934
    почетный гость
    Сейчас нет на сайте
    К слову о строительстве в 2d изометрии. Как решить проблему неправильного перекрывания друг друга спрайтов возводимых построек? Понятно, что каждой нужно свой слой задавать относительно других, в этом-то и загвоздка. Варианты есть, но хотелось-бы узнать мнение здешних специалистов.


    #Хийвэл бүү ай, айвал бүү хий.
    ShortKedrДата: Среда, 06 Июля 2016, 17:02 | Сообщение # 7935
    Renword Studio
    Сейчас нет на сайте
    Бозингар, Сортируйте по высоте. Первой высотой будет расстояние от верхней части экрана, второй высота по псевдо Y оси. Сделайте скрипт, который берёт весь ваш мир по кубикам у которых задана только псевдо Y высота (в отдельном скрипте или ещё где-то), сортирует массив и задаёт каждому спрайту свой слой отрисовки. Это сделать не трудно. А ещё можно сделать некий обсервер для движущихся объектов, но тут придётся немного подумать и придумать способ безболезненной смены слоёв, дабы fps не снижался. Я один придумал, но его нужно проверять на практике и дополнять, поэтому говорить не буду - может оказаться болезненно для вашей игры)
    БозингарДата: Среда, 06 Июля 2016, 19:45 | Сообщение # 7936
    почетный гость
    Сейчас нет на сайте
    Цитата ShortKedr ()
    Сортируйте по высоте.

    Да, примерно такой вариант изначально и был. Подумал, что должны быть и менее очевидные способы решить проблему. Но видимо, придётся и заниматься им дальше)

    Весьма помог цей урок. Возможно, кому-то тоже пригодится.


    #Хийвэл бүү ай, айвал бүү хий.

    Сообщение отредактировал Бозингар - Четверг, 07 Июля 2016, 10:26
    EyeДата: Четверг, 07 Июля 2016, 09:32 | Сообщение # 7937
    заслуженный участник
    Сейчас нет на сайте
    Подскажите, комрады, как лучше всего реализовать управление персонажем как в игре Машинариум?

    ICQ: 422190728,
    E-Mail: funnyalien@yandex.ru,
    Jabber: funnyalien@jabber.ru,
    Steam: funnyalienvalentine,
    Twitter: MrFunnyAlien,
    Skype: happyconsole,
    ВКонтакте: vk.com/twinemen,
    Мобильный: +79199212414.
    NEBRДата: Четверг, 07 Июля 2016, 12:47 | Сообщение # 7938
    почти ветеран
    Сейчас нет на сайте
    Цитата Eye ()
    Подскажите, комрады, как лучше всего реализовать управление персонажем как в игре Машинариум?


    Управление вообщем то простое... Я бы постоянно райкастил от курсора в сцену. Вся область, по которой персонаж может ходить имела бы свой меш коллайдер и тег Ground. И в Update проверка - если луч упирается в землю, то отображаем на курсоре спрайт с ножками. Если в этот момент происходит клик - двигаем персонажа в данную точку. Если же луч упирается в объект, с которым можно взаимодействовать, то опять же менял бы спрайтик курсора. На каждый из таких объектов я бы повесил коллайдер и скрипт, в котором в OnMouseDown писал бы логику для данного действия (это обработчик нажатия).


    King Size #Gamiron12
    EchoITДата: Пятница, 08 Июля 2016, 18:42 | Сообщение # 7939
    старожил
    Сейчас нет на сайте
    NEBR, не совсем корректен ваш способ. В той игре есть разные уровни высоты и "глубины" движения, насколько я понял. Т.е. изображение всё двухмерное, но персонаж может двигаться дальше и ближе от камеры, соответственно. Если Eye, разрабатывает трёхмерную игру, то самое простое решение - это NavMesh. Да и без него с тем же рейкастом в принципе можно разобраться. В 2D же, полагаю, лучшим решением было бы сделать эдакий примитивный аналог навмеш с клеточками, куда может двигаться игрок, настраиваемый вручную. Положение клеточек можно сделать по двум осям и добавить параметр "глубины", а можно сделать по трём (насколько я помню, при работе над 2д в юнити, третья ось всё ещё имеется и двигать по ней можно) и просто двигать в клеточку, на которую нажал игрок. Ну и для этого, разумеется, использовать поиск пути, проверяя, занята ли клеточка на пути к точке движения или нет. Для хождения по лестнице можно задать некую переменную Step, как в навмеш, которая будет отображать, на сколько клеточек игрок может подняться вверх за раз (если перед ним препятствие из 1 клеточки, к примеру, он может просто на неё встать, а если из двух - уже нет, слишком высоко для шага). Как-то так.

    Добавлено (08 июля 2016, 18:42)
    ---------------------------------------------
    Кстати, интересует такой вопрос, можно ли как-то у дочернего для дерева объекта сделать триггер? Деревья создаются с помощью инструментов террейна, и мой триггер превращается в обычный коллайдер, что печально. Расставлять их вручную будет раз в 15 дольше, а решать такую странную задачу мне ещё не приходилось, поэтому прошу совета.


    Долгожданный анонсик: State of War

    Сообщение отредактировал EchoIT - Пятница, 08 Июля 2016, 18:42
    STRATEG766Дата: Суббота, 09 Июля 2016, 00:06 | Сообщение # 7940
    частый гость
    Сейчас нет на сайте
    Как сделать поле ввода в UI? В GUI это вроде можно так сделать GUI.TextField. Есть ли такое в UI?
    Поиск:

    Все права сохранены. GcUp.ru © 2008-2024 Рейтинг