Новые сообщения · Участники · Правила форума · Поиск · RSS
Страница 1 из 11
Модератор форума: MaHBe 
Форум » Производство игр » Разработка игр » Unity - Game Engine » FAQ по Unity
FAQ по Unity
Nikikin Дата: Среда, 21.08.13, 21:20 | Сообщение # 1
Генеральный модератор
Сообщения: 218
Репутация: 73
Общие вопросы
В.: Как получить доступ к переменной в скрипте на другом ГО?
О.: Сделать эту переменную статической или же воспользоваться методом GameObject.GetComponent<Имя_скрипта>(). Ниже пример для второго способа
Синтаксис:
Используется csharp
Код
ScriptRespawn remoteScript = go.GetComponent<ScriptRespawn>();
float health = remoteScript.health;

// переменная health в ScriptRspawn должна быть public

В.: Есть ли уроки на русском?
О.: Полностью переведён один урок — FPS Tutorial (ссылка). Также частично переведена справка (ссылка).

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

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

В.: Как измерить расстояние между двумя объектами?
О.: Vector3.Distance()

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

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

В.: Как отключить контекстное меню в веб-сборке?
О.: disableContextMenu (ссылка)

В.: Как визуализировать Raycast?
О.: Debug.DrawLine.

В.: Как округлить дробь?
О.: Mathf.Round или Mathf.RoundToInt

В.: Как получить высоту точки террейна?
О.: Terrain.SampleHeight возвращает высоту точки относительно нуля этого террейна.

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

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

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

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

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

В.: Что делать с файлами .unitypackage?
О.: Assets > Import/Export Packages

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

В.: Как создавать GUI (графический пользовательский интерфейс)?
О.: Классы GUI и GUILayout.

В.: Можно ли строить GUI визуальными методами?
О.: Есть следующие решения: GUIX (ссылка), bitverse-unity-gui (ссылка) и XamlToUnityGUI (ссылка).

В.: Как отключить обработку коллизий для коллайдера?
О.: Включить опцию коллайдера 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 (после сборки билда).

В.: Не работает Array.length.
О.: В C# пишите .Length (с большой буквы).

В.: У меня глючит физика.
О.: Проверьте, осущетвляются ли все физические действия в FixedUpdate(). Увеличьте размеры объектов. Избавьтесь от тонких (или безтолщинных) мешей (Plane). Уменьшите FixedTimesetp.

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

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

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

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

В.: Могу ли я посмотреть исходники стандартного скина?
О.: Да, конечно (ссылка).

В.: Могу ли я посмотреть исходники стандартных шейдеров?
О.: Да, конечно (ссылка).

В.: Как отобразить кириллицу в GUI?
О.: Назначьте на стиль или скин шрифт с поддержкой кириллицы (импортировать шрифт в проект можно из папки C:/WINDOWS/Fonts). Дополнительно сохраняйте ваши скрипты в кодировке UTF-16 (в VS это Unicode - Codepage 1200).

В.: Как изменить кегль или начертание шрифта?
О.: Кегль — в настройках импорта. Начертание — импортом шрифта соответствующего начертания из вышеназванной системной папки /Fonts/.

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

В.: Как определить, кликнул ли я по ГУИ-элементу (не баттону)?
О.: rectB.Contains(Event.current.mousePosition); где rectB - ректангл ГУИ-элемента.

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

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

В.: Какие отличия между Pro-версией и обычной?
О.: http://unity3d.com/unity/licenses.html

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

Ошибки

В.: Я получаю сообщения об ошибке при открытии проекта или при импорте пакете .unitypackage.
О.: Первая причина — в пути до Unity, до проекта или до пакета присутствуют кириллические символы. Вторая причина —использование взломанной версии Unity.

В.: Пропускаются коллизии (объекты проскакивают друг через друга).
О.: Уменьшите Fixed Timestep, увеличьте размер объектов, уменьшите скорость их движения, используйте физические методы для перемещения (rigidbody.velocity вместо transform.Translate)

В.: Буквы разной ширины!
О.: Используйте моноширный шрифт. Например, Courier New.

В.: Скрипт не компилируется, хотя я в нём ещё ничего не писал.
О.: Имя первого класса в скрипте должно совпадать с именем скрипта (справедливо для C#).

В.: У класса исчезли поля и методы!
О.: Вероятно, вы назвали какой-то из своих скриптов или классов тем же именем. Например, распостраненно именование скриптов как «GUI», что конечно же неприемлимо.

В.: Я ставлю условие if (Input.GetKey("a")), но при нажатии A условие не срабатывает.
О.: Используйте if (Input.GetKey(KeyCode.A))
 
Форум » Производство игр » Разработка игр » Unity - Game Engine » FAQ по Unity
Страница 1 из 11
Поиск: