2016-10-16 4 views
1

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

Я изучил различные учебные пособия по таким вещам, как физика единства и вещи этой природы, и я видел учебные пособия, в которых человек кладет наземный спрайт на землю, затем прикрепляет краевой коллайдер в одну сторону и так далее.

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

Я ошибаюсь в этом? Есть ли простой способ создать уровень с помощью редактора для импорта спрайтов и создания фигур, ребер и объектов, а затем автоматически изменить масштаб игры и переместить объекты в соответствующие лимиты на основе размера экрана?

Для меня каждый раз, когда я делал игру в андроид или любую мобильную игру в целом. Мне пришлось сгенерировать все объекты с помощью скрипта, добавить компоненты через скрипт и, как правило, делать все с помощью скрипта до такой степени, что у моего фактического редактора в значительной степени просто был объект камеры и прикрепленный к нему сценарий, и об этом.

Есть ли более простой способ? потому что до сих пор все учебники о 2d играх, которые я видел, в значительной степени бесполезны для мобильных устройств, потому что они используют редактор для добавления спрайтов и кросс-коллайдеров вручную, что для меня кажется, что он не будет выглядеть правильно в 90% случаев.

Любые мысли будут оценены.

ответ

1

Сегодня дизайн игры должен быть реактивным.

Это очень, очень сложно, и нет простого или встроенного решения.

Да, это, к сожалению, абсолютный базовый аспект игрового дизайна в нашу эпоху.

Это действительно очень и очень сложно сделать 2D-игры работающими на всех различных формах экрана.

Подумайте, что-то вроде пейзажной 2D-аркадной игры - возможно, где вы стреляете друг в друга. Что это означает, если два человека конкурируют, и у вас есть экран 4: 3, и у вас есть экран 16: 9?

Должен ли он на самом деле занять больше времени для одного пользователя летать по экрану?!? Если вы отрегулируйте скорость судна, чтобы постоянное время простоя экрана?!?

Следует ли вам всего показать все товары на краях? Но подождите - это означает, что некоторые игроки получают гораздо больше предупреждений прибывающих врагов или пейзажей ??!

Никто не имеет ответа - это очень, очень сложно.

сложно концептуально, и настоящая боль для программы.

В ответ на ваш вопрос нет абсолютно встроенного метода борьбы с этими неприятностями в Unity (или любом игровом движке).

Почти все команды имеют такой код .......

/* 
Call this dynamically, probably from SizeCare or RotationCare 

Position something in relation to the dynamic screen edges 
- reactively so to speak 

This is critical for (for example) knowing where to launch sprites from, 
knowing where to dispose of them, and so on. 
*/ 

using UnityEngine; 
using System.Collections; 

public class KeepAtScreenEdges:MonoBehaviour 
    { 
    [Header("Left and right...")] 
    public bool keepOnLeftEdge; 
    public bool keepOnRightEdge; 

    [Header("Bottom and top...")] 
    public bool keepOnBottomEdge; 
    public bool keepOnTopEdge; 

    public void ScreenMaybeChanged() 
     { 
     if (keepOnLeftEdge) gameObject.ScreenLeft(); 
     if (keepOnRightEdge) gameObject.ScreenRight(); 

     if (keepOnBottomEdge) gameObject.ScreenBottom(); 
     if (keepOnTopEdge) gameObject.ScreenTop(); 
     } 

    } 

вы просто вставить его на маркер (маркер: пусто GameObject)

enter image description here

есть еще " верхний левый "один ...

enter image description here

и действительно, у вас будут целые созвездия «реактивных маркеров».

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

Так, например, у вас будет маркер для «места, где внестерические враги приходят к существованию, прямо справа от экрана». И вы будете использовать это для запуска врагов или что угодно.

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

Обратите внимание, что - слава богу - удивительная система UI конечно же реактивна, и это, слава богу, позаботится об аспекте пользовательского интерфейса «современный риккинский реактивный макет игры» (опять же, на самом деле не так просто быть абсолютно опытным с .UI, и вы должны быть. И это абсолютно тривиально по сравнению с «реактивной манерой игры», : /)

Снова - просто принципиально - забудьте о его техническом выполнении! - вы собираетесь пойти на такое решение, как «равная скорость по экрану» или «всегда показывать больше деревьев наверху» - или что-то еще? очень сложно.

+0

Благодарим вас, что на самом деле приятно утешиться тем, что делать все на основе ширины и высоты экрана (например, размер и скорость), а расположение маркеров по маркеру на местах было несколько точным, я всегда думал, что у меня что-то не хватает, основываясь на том, что все учебники в редакторе всегда делался легкий peasy, и я всегда думал, что есть какая-то магия, которой я отсутствовал. –

+0

Да, вы на самом деле на 100% правильны. Вы ничего не пропустили. Вы полностью поразили гвоздь на голове: «привет, мир», примеры того, как легко «сделать игру с Unity», к сожалению, полностью упущены. Ваше открытие точно верно! Это один из тех странных «слонов в комнате», о которых вы никогда не видели много упоминаний о Единстве. – Fattie

+0

Я бы предположил, что: Unity уже имеет свою (фантастическую) реактивную систему пользовательского интерфейса. И «новая» игровая 2D-система Unity (последние несколько лет) довольно хороша. Я подозреваю, что они в конце концов представят «реактивную» концепцию для игровой 2D-системы. На данный момент у каждой команды есть свое решение - например, код примера, который является частью «нашего» кода кода, который вы знаете. – Fattie

Смежные вопросы