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



Реп: (15)
usnavii @ 11.07.2012, 17:42 *
Ну на два множат что-бы светлее было.

Ну я понимаю, чтобы светлее было. Но зачем? Ведь правильнее будет увеличить свет в сцене. А так получается, что в один шейдер темнее, другой светлее.
usnavii @ 11.07.2012, 17:42 *
Так блок SetTexture в данном случае и есть тот код....

Тогда он выполняется для каждого пикселя или вершины или для чего?



Реп: (119)
wishmaster35 @ 11.07.2012, 18:56 *
Тогда он выполняется для каждого пикселя или вершины или для чего?


Текстуры могут комбинироваться с чем-то только при просчете фрагментов (пикселей).
Да и доступ к текстурам в вершинных шейдерах пока что не доступен для мобильных платформ.
Во всяком случае для большинства GPU.
"const mediump int gl_MaxVertexTextureImageUnits 0"

Сообщение отредактировал usnavii - 11.07.12, 18:18



Реп: (15)
Тогда чем этот SetTexture отличается от такого void surf (Input IN, inout SurfaceOutput o) {...} ?



Реп: (119)
wishmaster35 @ 11.07.2012, 19:20 *
Тогда чем этот SetTexture отличается от такого void surf (Input IN, inout SurfaceOutput o) {...} ?


Исторически так сложилось что шейдеры относятся к "Fixed Function" или "program pipeline". ( в контексте андроида OpenGL 1.0-1.1 и OpenGL ES 2.0 )

Combine имеет отношение к первому случаю,surf(Input IN, inout SurfaceOutput o) ко второму.

surf - процедура отрисовки поверхности для program pipeline.



Реп: (15)
Ну теперь что-то проясняется.
Значит "Fixed Function" должен работать и на OpenGL ES 1.0? Я когда-то пытался что-то писать под OpenGL ES 1.0, но не помню там никаких шейдеров. Может это что-то типа glBlendFunc(GL_ONE, GL_ONE_MINUS_SRC_ALPHA);? Т.е. настройка, а не сама шейдерная программа?



Реп: (119)
wishmaster35 @ 11.07.2012, 19:39 *
типа glBlendFunc(GL_ONE, GL_ONE_MINUS_SRC_ALPHA);? Т.е. настройка, а не сама шейдерная программа?


Не совсем это, но похоже.

Часть функциональности тянется еще со времен первого GeForce.
Шейдеры тех времен программами в нынешнем понимании назвать нельзя было.

Так как Unity движок не новый, это отсылки к register combiner

Нормальные шейдеры появились только во времена GeForceFX ( ну более-менее нормальные).
GeForce 3&4 переходный вариант.

wishmaster35 @ 11.07.2012, 19:39 *
Я когда-то пытался что-то писать под OpenGL ES 1.0, но не помню там никаких шейдеров.


Доступ был через расширения OpenGL.



Реп: (15)
usnavii, я так понимаю в одном Pass нельзя использовать и "Fixed Function" и "program pipeline", а в разных Pass можно?
Не знаешь как добавить к моему шейдеру цвет вершины?
Дописываю
BindChannels {
Bind "Color", color
Bind "Vertex", vertex
Bind "TexCoord", texcoord
}
Но все становится темнее, а цвет вершин все равно не работает. Хотя если отключить освещение, то работает.

Сообщение отредактировал wishmaster35 - 11.07.12, 20:13



Реп: (119)
wishmaster35 @ 11.07.2012, 21:11 *
usnavii, я так понимаю в одном Pass нельзя использовать и "Fixed Function" и "program pipeline", а в разных Pass можно?


Драйвера при инициализации работают только в каком-то одном режиме, или "Fixed Function" или "program pipeline".
Остальное эмуляция ( эмуляция "Fixed Function").

Не советую использовать что-то из "Fixed Function", так как устройств не поддерживающих "program pipeline" около 8% ( по статистике Google).
И 3D ускорение у них скорее для галочки. Ну пойдет Ваш проект под 5fps в секунду...
Больше мата услышите.
И потери производительности при эмуляции "Fixed Function" доходят до порядка.

Современные GPU не могут нативно работать с "Fixed Function pipeline", то есть на самом деле драйвер компилит шейдеры для поддержки "Fixed Function", то как дым, материалы, источники освещения. Но делает это в основном в лоб.

Если смотреть что получается через GlTrace, то увидим кучу условий ( ветвлений ) что очень негативно сказывается на производительности.
Например я в одном проекте вместо ОДНОГО IF сделал два полноэкранных прохода, FPS c ~40 поднялся до ~65 (mali 400,PowerVR SGX540+).
А шейдеры которые компилят драйвера обычно включают в себя десятки условий.

wishmaster35 @ 11.07.2012, 21:11 *
Дописываю BindChannels { Bind "Color", color Bind "Vertex", vertex Bind "TexCoord", texcoord }Но все становится темнее, а цвет вершин все равно не работает. Хотя если отключить освещение, то работает.


"BindChannels has no effect when programmable vertex shaders are used, as in that case bindings are controlled by vertex shader inputs." =)

Так пропишите что делать с цветами вершин, у Вас это не прописано в шейдере.



Реп: (15)
usnavii, спасибо. Даже не думал, что может так все оказаться) Однако на моем se x10 opengl es 1.0 намного быстрее, чем 2.0.
Так пропишите что делать с цветами вершин, у Вас это не прописано в шейдере.

Где прописать? Я так понимаю надо полностью перейти на program pipeline? Или можно и в Fixed Function?
Вот мой шейдер
Shader "Map/Map" {
Properties {
_MainTex ("Base (RGB)", 2D) = "white" {}
}
SubShader {
Tags { "RenderType"="Opaque" }
LOD 80

Pass {
Tags { "LightMode" = "Vertex" }

Material {
Diffuse (1,1,1,1)
Ambient (1,1,1,1)
}

Lighting On
SetTexture [_MainTex] {
Combine texture * primary DOUBLE, texture * primary
}
}
}
FallBack "Unlit/Texture"
}


Может как-то в Diffuse и Ambient можно прописать цвет вершины?
И "LightMode" = "Vertex" тут вообще нужен? Если я хочу вершинное освещение.



Реп: (468)
Нашел хорошее сохранение которое идеально работает на андроиде и при этом она Бесплатна
http://whydoidoit.com/unity-serializer-v0-2/

Если нет замечаний, предлагаю добавить в шапку.

Сообщение отредактировал tibers - 29.07.12, 13:44



Реп: (2)
Такой вопрос: Какие знания требуются для разработки игр на Unity и какие языки программирования можно применить в Unity?



Реп: (199)
skainetd @ 03.08.2012, 20:19 *
Такой вопрос: Какие знания требуются для разработки игр на Unity и какие языки программирования можно применить в Unity?

Умение моделить, текстурить (если 3D). Рисовать.
Из языков C# и Java Script.



Реп: (50)
Может было но вот нашел уроки:Unity Mobile Game Development
http://rutracker.org/forum/viewtopic.php?t=3932102
http://rutracker.org/forum/viewtopic.php?t=3932148
http://rutracker.org/forum/viewtopic.php?t=4046562
http://rutracker.org/forum/viewtopic.php?t=4046573
http://rutracker.org/forum/viewtopic.php?t=4046778
http://rutracker.org/forum/viewtopic.php?t=3880030
http://rutracker.org/forum/viewtopic.php?t=3880153

Сообщение отредактировал Спектра - 09.08.12, 18:03



Реп: (47)
Вот еще видеоуроки по юнити (андроид). На английском.
1. http://www.youtube.com/watch?v=3nh0uSjBUQw...;feature=relmfu
2. http://www.youtube.com/watch?v=L70clh3h5kc...;feature=relmfu
3. http://www.youtube.com/watch?v=am4-Cdx8YDU...;feature=relmfu
4. http://www.youtube.com/watch?v=xY6CpaU15Ek...;feature=relmfu
5. http://www.youtube.com/watch?v=_yh1LIV7dzY...;feature=relmfu
6. http://www.youtube.com/watch?v=zUE0SX7DnJo...;feature=relmfu
7. http://www.youtube.com/watch?v=PDALmyOVylM...;feature=relmfu



Реп: (126)
Unity3D 3.5.5 (Download)
Fixes
Android: Fixed black screen on Kindle when accessing Quick Settings.
Android: Script debugging yields/coroutines could sometimes cause a crash - this has been fixed.
Android: Fixed gl context-recreation. Now you can change AA or DisplayBuffer bitness at runtime even if post-effects are used.
Editor: Windows now draw correctly when fullscreen on OSX 10.8 Mountain Lion
Editor: Fixed dependency on X11 of pvr texture tool.
Editor: Allow importing assets with leading spaces on Windows.
Graphics: Fixed surface shaders regression in 3.5.3 that assumed custom surface output structure always has "Specular" member that is a scalar
Graphics: Fixed VRAM amount detection on some Intel SandyBridge / IvyBridge GPUs.
Graphics: Fixed rendering cameras in editor batch mode
Graphics: Fixed crash in particle system when source mesh has no normal or tangents
Graphics: Allow editor to build shaders in -nographics batch mode
iOS: Fixed Texture2D.ReadPixels on iOS6.
iOS: Fixed crash with suspending while video is playing.
iOS: Fixed more splash issues.
iOS: SystemInfo.deviceUniqueIdentifier no longer uses deprecated UIDevice.uniqueIdentifier.
iOS: Updated iPad2 detection to handle newly released one.
Mac Web Player: Fix focus handling when browser window loses focus.
Mobile: fixed broken lighting when dynamically batching uniformly scaled meshes.
MonoDevelop: Fixed cursor display on Mac Retina displays.
Navmesh: Fix for regression in 3.5.3 - where long paths some times be discarded when stoppingDistance > 0.
Script: Fixed crash when calling material.GetFloat(null).
Substance: Substances with bitmap inputs were not regenerating correctly.
Substance: Fix garbage collecting.
Substance: Cache fixes.

Features
Added Mesh.colors32 for faster and less memory consuming way of setting colors for procedural meshes.

Known Issues
Mobile: We changed the way Texture2D.ReadPixels works. Now, if you do call it during Update (or, generally, not during rendering frame) to grab the copy of the screen, the call will be deferred to the end of the current frame. Due to this, logic behind Apply was changed too.
What you need to do if you use ReadPixels to read pixels from the screen:
if you just grab screen copy and call Apply, you are good to go: both calls will be deferred to the end of the frame
if you grab screen copy, and do something with it, and call Apply after that: you need to defer all this to the next frame. The easiest way is to use coroutines with yield in between ReadPixels and your operations plus Apply.

On the other hand, you can always do ReadPixels in Camera's OnPostRender, or when you have active RenderTexture.
Editor: We dropped IMGTech standalone PVR Compressor, and built our own using their PVRTCLib. We do handle most of the options, but we do allow only one form of args with params: -arg


Сообщение отредактировал iNikit - 10.08.12, 23:05



Реп: (47)
Блин, а как сделать в FPS управлении чтоб правая половина экрана полностью отвечала за осмотрение/поворот?( ну как в обычных шутерах).
И для того чтобы игра шла под все экраны Free Aspect надо ставить? (Извиняюсь за тупые(или не тупые) вопросы).



Реп: (154)
Azbul, free aspect отвечает за разрешение экрана редактора, а для того чтобы поддерживались все разрешения, нужно для всех элементов GUI указывать относительные координаты (что-то типа Screen.width * 0.25f).

Для драглука почитайте документацию в разделе touch, там все есть.



Реп: (12)
Всем привет!
Пытаюсь сделать игрока дочерним к платформе при входе в триггер, но консоль ругается, пишет что команда 'transform' не является системным типом.
Child.transform.parent = Parent.transform;



Реп: (0)
вышла юнити 3.5.5f3 в шапку закинте.



Реп: (6)
почему не отображается например трава и блики в режиме Scene когда просто ставишь а когда включаешь game всё есть, хотя раньше так небыло


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

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

Сейчас: 29.03.24, 14:27