Unity 3D для разработки игр на Android-устройства | [Профессиональный мультиплатформенный игровой движок]



Реп: (59)

Прошлые версии


Unity3D — это мультиплатформенный инструмент для разработки двух- и трёхмерных приложений и игр, работающий под операционными системами Windows и OS X. Созданные с помощью Unity приложения работают под операционными системами Windows, OS X, Linux, Android, Apple iOS, Windows Phone, BlackBerry, а также на игровых приставках Wii, PlayStation 3 и Xbox 360. Есть возможность создавать интернет-приложения с помощью специального подключаемого модуля к браузеру Unity, а также с помощью экспериментальной реализации в рамках модуля Adobe Flash Player. Позже от поддержки Flash отказались. Приложения, созданные с помощью Unity, поддерживают DirectX и OpenGL.

Список поддерживаемых платформ:
  • Android
  • WP8
  • iOS
  • BlackBerry 10
  • Tizen
  • Wii U
  • OculisRift
  • GearVR
  • XBox 360/ XBox One
  • PS3/PS4/PSVita
  • Windows/Windows Store App
  • Linux/SteamOS
  • Mac
  • WebPlayer
  • WebGL
  • AndroidTV
  • Samsung SmartTV

С чего начать разработку под мобильные платформы:

Исходники:

Сайты:

Видеоуроки:

Текстовые уроки:

Плагины:

F.A.Q. (будет дополняться)
В.: У меня отсутствует часть сообщений в консоли, хотя они точно должны там быть.
О.: Выключите опцию Collapse в консоли.

В.: Как мне реализовать паузу?
О.: Наиболее простой вариант — установить Time.timeScale в ноль.

В.: Как заставить два меш-коллайдера взаимодействовать?
О.: Включить опцию Convex у обоих.

В.: Как отключить/заблокировать курсор?
О.: Screen.showCursor; Screen.lockCursor.

В.:Как придать телу импульс?
О.: Rigidbody.AddForce с параметром ForceMode.Impulse. 

В.: Как изменить громкость всех источников звука в сцене?
О.: AudioListener.volume

В.: Как избавиться от смазывания текстур при отдалении от них камеры?
О.: Отключить генерацию mipmaps в настройках импорта текстуры. 

В.: Как отключить вывод предупреждений в консоль?
О.: #pragma warning disable (в справке msdn даны подробности)

В.: Как спозиционировать Scene View на выбранном объекте?
О.: Edit > Frame Selected или просто клавиша F.

В.: Как сделать объект невидимым для Raycast?
О.: Поставить его в стандартный слой Ignore Raycast. 

В.: Как сделать так, чтобы игра была в горизонтальном а не в вертикальном режиме?
О.: В Player Settings нужно выбрать пункт Landscape left в Screen оrientation.

В.: Как отключить обработку коллизий для коллайдера?
О.: Включить опцию коллайдера isTrigger. Однако, такой коллайдер всё ещё будет принимать Raycast. 

В.: Куда сохраняются логи редактора?
О.: C:\Documents and Settings\zaicheg\Local Settings\Application Data\Unity\Editor\Editor.log
Этот же документ можно посмотреть, нажав Open Editor Log в консоли.

В.: Куда сохраняются логи приложения?
О.: Для standalone: _Data\output_log.txt. Для web: C:\Documents and Settings\user\Local Settings\Temp\UnityWebPlayer\log

В.: Где можно посмотреть, какие ресурсы сколько занимают в моём билде?
О.: Там же, в Editor.log (после сборки билда). 

В.: У меня глючит физика.
О.: Проверьте, осущетвляются ли все физические действия в FixedUpdate(). Увеличьте размеры объектов. Избавьтесь от тонких (или безтолщинных) мешей (Plane). Уменьшите FixedTimesetp. НЕ ДВИГАЙТЕ СТАТИЧЕСКИЕ КОЛЛАЙДЕРЫ (начиная с Unity5 уже можно, но всеравно не стоит)

B.: Не получается отредактировать элемент массива mesh.vertices (mesh.normals и прочее).
О.: Редактируйте во временном массиве vertTemp, а потом mesh.vertices = vertTemp.

В.: Я отключил скрипт, но он всё равно частично работает!
О.: Отключение скрипта действует лишь на вызов метода Update(). Start, Awake и прочие будут работать. 

В.: Как увеличить частоту физических расчётов?
О.: Edit > Project Settings > Time > Fixed Timestep

В.: Как приостановить выполнение в Editor Mode (поставить на паузу)?
О.: Debug.Break

В.: Как отобразить кириллицу в GUI?
О.: Локализация в коде это плохо. Нужно хранить текст в текстовых файлах и через код вытаскивать нужные строчки. Например, так (не самый лучший пример, но суть понятна)

В.: Как мне подгружать дополнительные ресурсы в рантайм?
О.: AssetBundles.

В.: Как менять хоткеи редактора?
О.: HKEY_CURRENT_USER\Software\Unity Technologies\Unity Editor

В.: Как разрешить игре работу "в фоне"?
О.: Edit → Project Settings → Player → Run in Background

В.: Почему не работает динамичный батчинг?
О.: В Unity есть лимит на количество вертексных атрибутов в 900 штук (лимит поставлен юнитеками опытным путем, может быть изменен в будущем, самому поменять его нельзя), именно вертексов, а не поликов. Т.е. смотрим на шейдер, которым хотим что-то отрисовать, на его входящие параметры. Видим, например, position, uv, normal - 3 атрибута. Делим 900 на 3, получаем лимит в 300 вертексов. Вот если модели с материалом на данном шейдере будут не более 300 вертексов - они будут сбатчены. Т.е. если отказаться от normal в шейдере, то получим position, uv - 900 / 2 = лимит в 450 вертексов. Если откажемся от uv (можно посчитать в том же вершинном шейдере для статичной геометрии, но это уже специфичные вещи), то получим 900 / 1 = лимит в 900 вертексов. От position отказаться нельзя, это координаты самого вертекса. Аналогично, если передавать position, uv, uv2, normal, tangent, color, то получим 900 / 6 = лимит в 150 вертексов.

В.: Почему возникают баги с обработкой столкновений коллизии?
О.: Это не баги, это непонимание того, как работает физика в юнити, уже было неоднократно объяснено. Коллайдеры без RB двигать нельзя, двигать нельзя, двигать нельзя - они считаются статичным миром, который двигаться не может и внутри расчитывается с оптимизацией по кластерам. Как только статичный коллайдер двигается - весь статичный мир перестраивается. Объекты с RB считаются отдельно как динамические объекты. Собственно, отсюда и "баг" - т.к. статичный мир не может двигаться, то и события наступать не могут при его принудительном движении.
P.S. Судя по профайлеру тот же CharacterController является статик-коллайдером со всеми вытекающими последствиями.
P.P.S. После выхода Unity 5 стало можно, но всеравно не тоит...

В.: Почему не работает Asset store? Как заставить работать?
О.: Попробуйте выключить режим использования DirectX 11

В.: Сколько стоит Unity?
О.: https://store.unity3d.com/shop/

В.: Какие отличия между Pro-версией и обычной?
О.: Заходим на страницу покупки Unity и на нужной лицензии выбираем Read more. После этого появится окошко, в котором можно посмотреть отличия между лицензиями.

В.: Где можно взять исходный код Unity?
О.: Нажмите здесь, выберете Россию, потом свяжитесь с представителями Unity Technologies. Разумеется это не бесплатно
Оригинальный текст с сайта Unity:
"If you want to license Unity to develop content for consoles and/or for embedding, cloud distribution or to access Unity source code, contact us here."


Правила поведения в теме:
  • Прежде чем задать вопрос, обязательно читайте F.A.Q. и пользуйтесь поиском по теме, возможно на ваш вопрос уже есть ответ!
    Кнопка поиск находится в правом верхнем углу.
  • Сообщения, не относящиеся к теме и вопросы, ответы на которые есть в F.A.Q. будут удаляться!!!
  • Обсуждение пиратских версий Unity или просьбы выложить пиратский контент, а так же сообщения, содержащие пиратский контент будут удаляться, а авторы по возможности будут караться!!!


В теме нет куратора. По вопросам наполнения шапки обращайтесь к модераторам раздела через кнопку "Жалоба" под сообщениями, на которые необходимо добавить ссылки.
Если в теме есть пользователь, желающий стать Куратором и соответствующий Требованиям для кандидатов, он может подать заявку в теме Хочу стать Куратором (предварительно изучив шапку темы и все материалы для кураторов).


Сообщение отредактировал derak1129 - 07.10.20, 10:38
Причина редактирования: Версия Unity 2020.1.7



Реп: (19)
alex-4ij @ 18.4.2014, 14:42 *
ganthales,
Если я вас правельно понял, то открываем google и ищем
что такое 'декаль' (Decal)...

UPD: так как декалии бывают и в типографии, ищем декаль в создании игр.
вы обсолютно меня не правильно поняли. Я говорю про не статические объекты. Если на движущегося перса повесить декаль, то местами он будет гулять внезависимости от аттача к Кости. Leopotam, на счет твоего предложения думал уже, но не подходит, ибо нужна фактура. Есть еще предложения по поводу крови персе?



Реп: (34)
ganthales, что-то не пойму я вас. Считаете себя таким умным, а сами не умеете искать в гугле и думать над проблемой. Обе варианта отлично подходят, просто нужны кривые руки. Сам с декалями близко не связывался, но тот-же вариант Leopotam'а - что вам мешает использовать альфы? Вам что, всё разжевать нужно, как маленькому ребёнку?



Реп: (19)
ganthales, что-то не пойму я вас. Считаете себя таким умным, а сами не умеете искать в гугле и думать над проблемой. Обе варианта отлично подходят, просто нужны кривые руки. Сам с декалями близко не связывался, но тот-же вариант Leopotam'а - что вам мешает использовать альфы? Вам что, всё разжевать нужно, как маленькому ребёнку?
Зачем мне кривые руки? Да, видимо действительно все дело во мне, я идиот, постоянно считающий себя самым умным, и мне лень зайти в гугл. Вот не пруха. А теперь сам лично безо всяких выпендрежий проверь первый способ. И я посмотрю как проецированная декаль зааттаченная к груди будет веером обхаживать лицо персонажа. А вот версия Leopotam'a более вменяемая. Только не понимаю основную концепцию, бленд по вертексам, это как? Можете в доку ткнуть плиз?

Сообщение отредактировал ganthales - 18.04.14, 21:10



Реп: (207)
andre1234578 @ 18.04.2014, 18:24 *
Когда я тестирую игру на компьютере, все выглядит красиво, запускаю на андроиде текстуры становятся квадратными.Причём изменения текстур наблюдаются только на Terrain, на объектах всё выглядит как надо.Что делать?
P.S Видеоускоритель mali-400MP.

1. Не использовать тайлинг выше 10.
2. Сделать террейн мешевым с тем же ограничением из п.1 для тайлинга каждого куска.
3. Сказать, что будет работать только на adreno и powervr, а так же mali 6xx. Не будет работать на mali до 6xx и на всех теграх.

ganthales @ 18.04.2014, 21:57 *
проецированная декаль зааттаченная к груди будет веером обхаживать лицо персонажа.

нужно атачить к костям-пустышкам, которые должны быть в скелете. Те же пустышки можно использовать как точки монтирования оружия, брони и т.п.
ganthales @ 18.04.2014, 21:57 *
Только не понимаю основную концепцию, бленд по вертексам, это как?

В шейдер передавать 2 текстуры - нормальную и с кровью (взять нормальную и модифицировать ее так, словно персонаж полностью поврежден по всей поверхности), потом делать что-то типа:
sampler2D _MainTex;
sampler2D _BloodTex;
half4 _SatTex_ST;
struct v2f {
float4 pos : POSITION;
half2 uv : TEXCOORD0;
fixed blood : TEXCOORD1;
};
v2f vert (appdata_full v) {
v2f o;
o.pos = mul(UNITY_MATRIX_MVP, v.vertex);
float4 worldPos = mul(_Object2World, v.vertex);
o.uv = TRANSFORM_TEX(v.texcoord, _MainTex);
o.blood = v.color.r;
return o;
}
fixed4 frag (v2f i) : COLOR {
return lerp(tex2D(_MainTex, i.uv) * tex2D(_BloodTex, i.uv), i.blood);
}

Ну и на шарпе назначать цветам меша в красный канал 0 или 100%, в зависимости от того, где надо добавить кровь:
var mesh = skinMeshRenderer.sharedMesh;
var colors = new Color32[mesh.vertexCount];
for (var i = 0; i < colors.Length; i++) {
colors[i] = new Color32(255, 0, 0); // полностью окровавленный.
}
mesh.colors32 = colors;

Точечное попадание (номера вертексов) можно теоретически определить по информации о коллизии.

Сообщение отредактировал Leopotam - 18.04.14, 22:39



Реп: (12)
Всем добрый вечер, вопрос как добавить видео в сцену, перемищаю с 'асетс', видео не читает и выдает ошибку. Как заменить шрифт в onGUI? Хотелось бы заменить стандартный шрифт, на более красивый.


Сообщение отредактировал bez__imeni - 19.04.14, 00:15



Реп: (11)
bez__imeni @ 19.04.2014, 00:54 *
Всем добрый вечер, вопрос как добавить видео в сцену, перемищаю с 'асетс', видео не читает и выдает ошибку. Как заменить шрифт в onGUI? Хотелось бы заменить стандартный шрифт, на более красивый.

Создаёшь GUISkin , открываешь в нём lable , нажимаешь на font и выбираешь нужный шрифт(до этого надо нужный шрифт в папку и с игрой закинуть) в скрипте пишешь в начале public GUIskin mySkin; там где надо изменить шрифт GUI.skin = mySkin.



Реп: (19)
Leopotam @ 19.04.2014, 08:21 *
нужно атачить к костям-пустышкам, которые должны быть в скелете.
Так как я это понимаю не получиться, могу скинуть видео.(Разницы не будет)

Leopotam @ 19.04.2014, 00:31 *
Ну и на шарпе назначать цветам меша в красный канал 0 или 100%, в зависимости от того, где надо добавить кровь:
Здорово! Не знал что повертексно можно можно цвет менять! Спасибо!


Сообщение отредактировал ganthales - 19.04.14, 09:53



Реп: (19)
https://www.youtube.com/watch?v=gPzI1r8bBBE
Здесь на видео показан первый способ(Декали на персонажах) где-то между 1:13-1:14 секунды. Видно как кровь гуляет по голове и ногам.
Что нужно? Ваша оценка! На такое глаза закрыть можно? Или глаза режет? Буду благодарен за отзыв.
П.С. Я знаю что, то что на видео, можно реализовать простой заменой окровавленной текстурой, НО! Я ищу более простой выход из положения. Есть еще вопрос. Умеет ли Юнька рисовать на текстуре в реал тайме? Ну или хотябы заморозить прожектурную декаль?

Сообщение отредактировал ganthales - 19.04.14, 10:33



Реп: (2)
ganthales,
Можно. Вертексная декаль очень спорное решение. Да и вряд ли это декаль, больше на маску смахивает.
Способ с динамической текстурой.
Алгоритм следующий.
В райхите есть текстурные координаты.
http://docs.unity3d.co…tHit-textureCoord.html
Генеришь текстуру декали, например простым смешиванием через Лерп цвета.
http://docs.unity3d.co…exture2D.SetPixel.html
Также тебе нужен будет кастумный шейдер, где ты по альфе смешиваешь 2 текстуры.
if(layer1Color.a > 0)
{
result.rgb = lerp(result.rgb, layer1Color.rgb, layer1Color.a);
}

Результат ниже.
Прикрепленное изображение






Реп: (12)
Вопрос, насчет пиксельных текстур на Mali 400-MP, текстуры будут квадратными всегда или только тогда когда тайлинг больше 10?



Реп: (19)
DerekStreyt @ 19.04.2014, 12:37 *
Алгоритм у тебя идет со статичными объектами, где нужен меш коллайдер если я не ошибаюсь. А вот со skinned mesh по сложнее будет. Поправьте если ошибаюсь.



Реп: (2)
ganthales,
Все верно. Поэтому тебе нужно на основе этих данных сделать свое. Рекомендую, сделать стейты. Например сделать набор текстурок и рандомно смешивать их в одну в зависимости от того куда попал.



Реп: (19)
DerekStreyt, а существует ли способ заморозки прожектора? Ну что бы он в дальнейшем не проводил расчеты по отбрасыванию текстуры, а просто оставил декаль на текстуре как есть? (В этом плане я нуб, поэтому на том видео ограничился лишь обычным прожектором).



Реп: (2)
ganthales, Заморозка? Можешь попробовать приатачить в рантайме к трансформу при столкновении, попробовать углы. Но в итоге, скорей всего, откажешься от этой идеи. Прожектор не упростит, а наоборот. Не ленись) Посмешивай тестурки.




Реп: (31)
У меня есть уже готовая игра на unity для PC как мне её можно изменить допустим добавить новые предметы или оружие



Реп: (19)
DerekStreyt @ 19.04.2014, 14:39 *
Не ленись) Посмешивай тестурки.

Ни в лени дело, смешивать текстурки это круто. Но у меня не оптимизированные персонажи(Каждый из них состоит из нескольких самостоятельных объектов со своей разверткой), и менять текстуры каждому объекту... Можно в принципе, но как это сделать со скинами не знаю((

Сообщение отредактировал ganthales - 19.04.14, 14:06



Реп: (22)
Есть тиррейн размером 2000X8000, можно как-нибудь уменьшить до, к примеру, 100х400, чтобы ландшафт остался тот же самый! Есть какие-нибудь специальные плагины?



Реп: (12)
denkuzo2222 @ 19.4.2014, 13:57 *
У меня есть уже готовая игра на unity для PC как мне её можно изменить допустим добавить новые предметы или оружие

если бы вы сами написали игру эту игру, то вы бы незадавали вот таких вопросов



Реп: (31)
bez__imeni @ 19.04.2014, 18:43 *
если бы вы сами написали игру эту игру, то вы бы незадавали вот таких вопросов

И к чему этот ответ?



Реп: (184)
denkuzo2222 @ 19.04.2014, 14:51 *
И к чему этот ответ?
к тому, что нужно/желательно быть разработчиком этой игры для ее дальнейшей модификации


Полная версия   Текстовая версия

Помощь   Правила

Сейчас: 29.03.24, 08:46