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



Реп: (154)
MadeManZ, как-то так
Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
RaycastHit hit;
if (Physics.Raycast (ray, out hit, 500))
hit.collider.gameObject.GetComponent<Cube>().Type = 3;


Сообщение отредактировал Lord Kratos - 21.06.12, 18:13



Реп: (15)
Можно как-то нарисовать самому в инспекторе список как используется в иерархии и стандартном инспекторе?
Главное, чтобы можно было выбирать элемент.
Даже не пойму как вручную такую синюю полоску нарисовать, если не текстурой и не через GL.



Реп: (154)
wishmaster35, в инспекторе? такую?



Реп: (15)
Lord Kratos, нет. Это вообще не список.



Реп: (16)
Lord Kratos,
я в яве реализации)
ну да чуть подправить надо



Реп: (126)
MadeManZ,
Эм.
ray : Ray;
ray = Camera.main.ScreenPointToRay(Input.mousePosition);
hit : RaycastHit;
if (Physics.Raycast (ray, hit, 500))
hit.collider.gameObject.name.GetComponent(Cube).Type = 3;

Вроде так должно работать :scratch_one-s_head:



Реп: (114)
Как реализловать подборку предметов таким образом, кликаем на придмет и он появляется в руке гг?



Реп: (154)
amnesia333, пускаем луч по клику через координаты мыши, если попали во что-нибудь, проверяем, можно ли вообще это брать (например, по тегу). Потом делаем предмет чайлдом "себя" и задаем правильную координату и поворот.

Можно задать небольшое расстояние, на которое будет вылетать этот луч, чтобы не подбирались предметы через весь зал.

Либо, просто на предмете пишем скрипт, который определяет, что по нему кликнули (стандартная функция, скриптинг рефференс в помощь)

Сообщение отредактировал Lord Kratos - 24.06.12, 14:29



Реп: (15)
При изменении размера окна у всех GUI начинает показывать какую-то чушь? Так уже задрало.



Реп: (150)
amnesia333,
На всякий случай, вот тебе ссылка ( смотреть с 116. Unity3d Tutorial - Looting Part 1 и до посинения 141. Unity3d Tutorial - Weapon Meshes Part 2, тут как раз и будет смена оружия) на туториалы по этой теме ( почти, т.к там делается инвентарь и все с ним вытекающие, в том числе под конец и смену оружия ). Но может ясное дело и не подойти, т.к там все это дело очень последовательное, в идеале нужно смотреть еще раньше :)



Реп: (114)
Vegasus, спасибо, буду смотреть :thank_you:



Реп: (468)
Привет всем сегодня нашел хороший скрипт в asset store Auto Quality Chooser. Этот скрипт автоматически изменяет качество изображения



Реп: (113)
А у меня вот такой вопрос. После нескольких смертей (использую коллайдер, который при падении на него стартует уровень заного через Application.LoadLevel) или попыток начать заново уровень начинает падать фпс (с 40 до 12) и на раз 6й просто вылетает. Что же это может быть? :scratch_one-s_head:



Реп: (61)
s7ealth @ 7.7.2012, 1:15 *
А у меня вот такой вопрос. После нескольких смертей (использую коллайдер, который при падении на него стартует уровень заного через Application.LoadLevel) или попыток начать заново уровень начинает падать фпс (с 40 до 12) и на раз 6й просто вылетает. Что же это может быть? :scratch_one-s_head:

Переполнение памяти,не?



Реп: (0)
Еще есть пара вопросов разработчикам:
1)возможно ли создавать 2d игры
2)что за ерунда с версией сдк? Требует минимум четвертую версию, но тогда получается минус все или почти все телефоны?



Реп: (154)
v.gerchicov,
1) да
2) нет никакой ерунды, у меня поддерживаются все андроиды с 2.0.1 до 4.0. вы что-то путаете

Сообщение отредактировал Lord Kratos - 08.07.12, 16:39



Реп: (113)
v.gerchicov,
Установи нормально android sdk. У меня такое писало, поискал решения, поставил JDK(Java Development Kit) и заработало



Реп: (295)
v.gerchicov @ 08.07.2012, 15:53 *
2)что за ерунда с версией сдк? Требует минимум четвертую версию, но тогда получается минус все или почти все телефоны?

требуется обязательно наличие Андроид СДК версии 4.0 и выше, а также версии, под которую собираем игру.



Реп: (15)
Кто-нибудь в шейдерах понимает? Есть такой шейдер
Shader "Test" {
Properties {
_MainTex ("Base (RGB)", 2D) = "white" {}
}
SubShader {
Tags { "RenderType"="Opaque" }
LOD 80

// Non-lightmapped
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"
}


Я так понимаю в нем нет кода, который выполнялся бы для каждого пикселя или вершины, а все это лишь настройка, которая будет происходить перед рендерингом модели?
И вот не совсем понимаю блок SetTexture.
Combine texture * primary DOUBLE - это цвет текстуры * цвет освещения * 2. Вот не пойму зачем на 2 умножают? Не лучше ли источники света усилить?
Дальше идет texture * primary это для вычисления альфы. Вопрос оно надо, если шейдер не прозрачный?
И как сюда добавить Vertex Color?

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



Реп: (119)
wishmaster35 @ 11.07.2012, 17:54 *
Вот не пойму зачем на 2 умножают?

Ну на два множат что-бы светлее было.

А умножение на три тогда TRIPLE будет? =)

wishmaster35 @ 11.07.2012, 17:54 *
Я так понимаю в нем нет кода, который выполнялся бы для каждого пикселя


Так блок SetTexture в данном случае и есть тот код....


Какой уеб..шный синтаксис у Unity.


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


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

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

Сейчас: 29.03.24, 18:49