![]() |
Ответ: Вопросы от новичка
Думаю это зависит от того, как надо. Корабли могут менять свои курсы и ракеты в них больше не попадут, т.е. рассчитать в начале полета столкновение никак нельзя. Если ракета самонаводящаяся, то можно посчитать уйдет ли корабль от ракеты или нет и создать только событие запуска и визуализацию. Если ракета прямой наводки, то тут так не получится.
|
Ответ: Вопросы от новичка
Цитата:
То, что ты описал происходит, когда ты открыл конкретный файл, а не проект. Может ты не нажал Reload All, когда юнити изменил файл проекта. Подскажите, из объекта можно получить ссылку на префаб? |
Ответ: Вопросы от новичка
Цитата:
Цитата:
|
Ответ: Вопросы от новичка
Никто не знает как в инспекторе отрисовать интерактивное превью GameObject'а?
Вот чтобы меш отрисовать есть класс PreviewRenderUtility. Код:
public override void OnInteractivePreviewGUI(Rect rect, GUIStyle background) { |
Ответ: Вопросы от новичка
Если это ассет, то можно наверное этим методом получить превью:
http://docs.unity3d.com/ScriptRefere...etPreview.html PS: а если GO поставить перед камерой previewRender.m_Camera перед строчкой previewRender.m_Camera.Render(); ничего не происходит? |
Ответ: Вопросы от новичка
Я пока использую AssetPreview.GetAssetPreview, но это просто текстура. Никакого интерактива, еще и разрешение маленькое.
PreviewRenderUtility давно появился? Почему-то только недавно я его обнаружил. Раньше я вручную ставил и камеру и объект, чтобы отрендерить привью, но ничего хорошего так и не вышло. Лучше обойдусь GetAssetPreview. А как правильно по нажатию мышки удалять\добавлять GUI элементы? В редакторе вроде никаких проблем не было, а в игре кидает ошибку, что между Layout и Repaint были изменения. Код:
ArgumentException: Getting control 2's position in a group with only 2 controls when doing mouseDown |
Ответ: Вопросы от новичка
Я обычно вызываю функцию GUIUtility.ExitGUI(); и потом return после таких изменений.
|
Ответ: Вопросы от новичка
В Unity 5 что-нибудь изменилось с execution order ?
Ибо в 4й версии он явно был сделан от балды. Было бы лучше задавать execution order атрибутом для каждого класса и даже для конкретного уровня программы (namespace, например). Сейчас же заметил, что инстансированному объекту пофиг на его execution order. Но это в юнити 4. Может в 5й уже исправили. |
Ответ: Вопросы от новичка
А никак нельзя узнать для какого свойства было вызвано OnValidate?
Или хотя бы для свойства оно было вызвано или нет? Ибо оно вызывается перед Awake и после OnDestroy. |
Ответ: Вопросы от новичка
Цитата:
|
Ответ: Вопросы от новичка
Как же мешает, что изменение GUI.matrix влияет на Area или Group, которые были заданы до изменения матрицы!!!
Т.е. чтобы было что-то типа GL.PushMatrix. Ибо часто надо рисовать с перевернутой Y координатой и в других масштабах. Надеялся что в Unity 5 исправят, но нет( |
Ответ: Вопросы от новичка
Теперь EditorUtility.SetDirty не работает для объектов сцены.
Надо использовать SerializedObject, Undo.RecordObject или EditorSceneManager.MarkSceneDirty Я теперь каждый раз должен вручную проверять принадлежит ли объект сцене или нет?! В самой юнити, я так понял, пишут так: Код:
SerializedProperty damageProp; |
Ответ: Вопросы от новичка
Я недавно увидел полезный пункт в меню Create окна Hierarchy - "Create Empty Child", это позволяет создавать пустышку внутри выделенного объекта. скрин https://yadi.sk/i/91zF1aYxs6vKV
|
Ответ: Вопросы от новичка
2WISHMASTER35
1. В OnGUI можно рисовать с использованием GL, это не решит проблемы? В целом можно так же рисовать в событии EventType.Repaint, когда Layout уже рассчитан, тогда изменение матрицы не должно повлиять на него, ну и в целом свои функции push и pop можно попробовать сделать. 2. В целом да, надо еще проверять, в какой сцене ты его редактируешь наверное) Но лучше использовать Undo. |
Ответ: Вопросы от новичка
Цитата:
|
Ответ: Вопросы от новичка
Цитата:
|
Ответ: Вопросы от новичка
Цитата:
А вот вторая идея - интересная. Странно, что сам не догадался, что можно изменять матрицу не для всех событий) pax, ты уже работал с новым UNET? Как при спавне передать некоторые параметры (цвет, имя)? В фотоне были photonView.owner.customProperties. И то мне этот способ не нравился ибо эти свойства будут там постоянно висеть. |
Ответ: Вопросы от новичка
Цитата:
GL использует любой материал с любыми текстурами. Смотри пример Material.SetPass UPD: Собственно еще вариант для отрисовки текстуры кверху ногами GUI.DrawTextureWithTexCoords Цитата:
Что на счет фотона, там было несколько способов. Свойства игрока это нормальный в целом способ, они передаются всем подключившимся игрокам и могут быть использованы в любой момент. При изменении свойств синхронизируются у всех. Еще вариант - посылать сообщения [RPC] с буферизацией. Новые игроки при подключении должны так же получать буферизированные сообщения. Такое было в стандартной сети Unity, думаю такое можно сделать и в UNET. Собственно можно даже самому написать отправлялку всем при подключении к комнате и новым игрокам при их подключении. |
Ответ: Вопросы от новичка
Кто-нибудь понимает, что такое Relay Server и зачем он нужен при мачмейкинге?
|
Ответ: Вопросы от новичка
"Промежуточный сервер". Используется например, когда невозможно прямое соединение между компьютерами (в торрентах например). Если Ваш комп за NAT, proxy, файрволом то peer-to-peer соединения невозможны, а через Relay сервер - пожалуйста.
|
Ответ: Вопросы от новичка
Цитата:
Чем это тогда отличается от платного лобби? |
Ответ: Вопросы от новичка
Вообще я с этим в Юнити не работал. Опишу как понимаю.
1. В игре вообще может не быть выделенного сервера. Следовательно все клиенты просто взаимодействуют друг с другом. Возможно один из клиентов - "главный", но это не принципиально. В этом случае все клиенты которые за NAT просто не смогут играть. Для таких клиентов делаем Relay сервер, который совсем не обрабатывает ничего, просто через него происходит общение с такими ущемленными клиентами. При этом нормальные клиенты могут между собой общаться как и раньше - без сервера. 2. Даже если у Вас есть выделенный сервер, какая то часть общения клиентов может вынесена peer2peer, например чат группы. Для такого общения все вышесказанное тоже верно. Т.е. через Relay сервер может идти не весь трафик, а только нужный для спецклиентов. Если таких клиентов не будет - он может вообще простаивать. |
Ответ: Вопросы от новичка
Цитата:
Ведь порты случает только сервер. |
Ответ: Вопросы от новичка
Цитата:
Цитата:
Relay сервер как раз для этого и есть. |
Ответ: Вопросы от новичка
Проблема с git merge.
1. Перевёл тип данных проекта из Mixed в Force Text. 2. Заюзал SmartMerge for SourceTree. При слиянии сцен через Resolve Conflicts -> Launch External Merge Tools получаю табличку с ошибкой. А при обычном sourcetree'шном мердже просираются изменения, сделанные товарищем. Кто как мерджит, подскажите. |
Ответ: Вопросы от новичка
Цитата:
Наверно же не может какие-то объекты смержить. |
Ответ: Вопросы от новичка
В Unity 4 кажется можно было отключить Skybox в Gizmos, но сейчас такого не вижу.
Unity убрали эту функцию или ее и не было? |
Ответ: Вопросы от новичка
> Ну а что за ошибки?
"Не найдено правило мерджа для .tmp файлов 'в таком-то файле в папке с юнити'". Я открывал, там ни для каких файлов нет правил. Да и нет у меня tmp файлов, видимо утилита сама их сгенерила. |
Ответ: Вопросы от новичка
Скайбокс тут - https://yadi.sk/i/AmkyfxRissHZ5
|
Ответ: Вопросы от новичка
Цитата:
|
Ответ: Вопросы от новичка
А вот хрен его знает. Т.к. мы доделали демку, то я пока забил на эту тему.
Ещё вариант - юзать мультисцену. Каждый работает в рамках своей сцены. Но всё равно свет и камера общие - приведут к коллизии при мердже. Ещё вариант - создать объекты пустышки для разных частей-модулей, и динамически фигарить через префабы. Неудобство, кароче. |
Ответ: Вопросы от новичка
Мы пользуем SourceTree + P4Merge, все ассеты сериализуются в текст, мета-файлы видимы - почти никаких траблов с мерджем сцен. Единственный нюанс - нужно когда все синхронизированны на одном коммите перевести проект на текстовую сериализацию, и всем обновиться. По умолчанию юнити использует то ли смешанную, то ли бинарную сериализацию.
|
Ответ: Вопросы от новичка
Unity 5.3.5. + 2 монитра.
Поставил второй монитор и словил баг - UI перестает работать если например перенести окно на другой монитор, или даже просто запускать несколько раз (ничего не нажимается, от eventTriger тишина). Это лечится? Ну кроме как перезапуском редактора. Я вот боюсь что отвалится оно в билде, когда я буду использовать несколько мониторов (в доках сказано что так можно - по камере на монитор). Причем если второй отрубить,то вроде и работает нормально. UPD. Не работает если даже просто долго с ним взаимодействовать. UPD. Теперь так даже если отключить второй монитор. UPD. Случается со всеми версиями. Перешел на 5.3.4 -такая же шляпа. Ошибок нет. Upd. abd на последней версии СДК порой вешает юнити, походу он и блокирует эвент систем, наверное Юнити ждет подключение устройства (ну когда она отправляет картинку на мобилку) Собственно баг. |
Ответ: Вопросы от новичка
Я тоже наблюдал такой баг. Лечение не искал, просто рестартил юнити.
|
Ответ: Вопросы от новичка
Цитата:
|
Ответ: Вопросы от новичка
Как работает GL.MultMatrix ? Такое чувство, что он не умножает матрицу, а просто задает новую.
Можно написать: Код:
GL.MultMatrix( Matrix4x4.Scale( new Vector3( 10, 1, 1 ) ) ); Здесь http://www.cnblogs.com/wantnon/p/5066203.html описывается такая проблема. |
Ответ: Вопросы от новичка
По идее должно множить несколько раз...
Можно наверное умножать несколько раз саму матрицу: PHP код:
|
Ответ: Вопросы от новичка
pax, похоже GL.MultMatrix просто умножает GL.modelview на свою.
Это работает. Код:
GL.modelview *= matrix; |
Ответ: Вопросы от новичка
Еще во времена Unity 3 я нашел такой код, который не дает переключится на другой объект. Т.е. можно клацать по чем угодно в сцене, но выбранный объект не переключится.
Код:
HandleUtility.AddDefaultControl( GUIUtility.GetControlID( FocusType.Passive ) ); Сейчас надо что-то подобное сделать, только чтобы при нажатии shift + right mouse не срабатывало вращение камеры. |
Ответ: Вопросы от новичка
Можно на камеру кинуть скрипт, выполняемый во время редактора. И в нём в LateUpdate проверять шифт+мышь. Если есть, то ставим rotation из предыдущего кадра.
|
Ответ: Вопросы от новичка
Цитата:
UPDATE Так можно отключить и выбор объектов и вращение камеры. Но как оно работает я все равно не пойму. Код:
int controlId = GUIUtility.GetControlID(FocusType.Passive); |
Ответ: Вопросы от новичка
Корутина WWW неплохо нагружает поток,FPS падает до 15.
Загружаю встречно основным действиям картинку с диска. До этого грузил по необходимости (т.е нужно сменит - останавливаю обработку, загружаю, обновляю), сейчас решил сделать как-то так: Работаю с текущим изображением + гружу новое, а потом обновляю, когда нужно. Но это нехило грузит. Что посоветуете? ![]() |
Ответ: Вопросы от новичка
Я делал как-то сериализацию текстур в байты и загрузку из байтов, работало шустро (главное не пролюбить задать принимающей текстуре все-все-все параметры как у отдающей байты); плюс загрузку байтов можно перекинуть в другой поток (не уверен, что с загрузкой текстуры проканает, но можешь попробовать)
Если самому лень с тредами копаться - в ассет сторе есть хорошее расширение со скриптом MagicThread, пример исполья - тут. |
Ответ: Вопросы от новичка
Как заставить юнити сериализовать поля своим сериализатором, но что бы эти поля не сериализовались другим.
Нужно сохранить только зеленое, но красное настроить в едиторе. Он или все сериализует, или не отображает красные поля. ![]() |
Ответ: Вопросы от новичка
Пометь нужные поля своим атрибутом и убери NonSerialized. В своем сериализаторе свой атрибут используй. Я лично именно так и делаю.
UPD: Еще вариант. Те поля, которые красные делай приватными с атрибутом SerializeField и будет тебе счастье. |
Ответ: Вопросы от новичка
Для чего серализацию используете? Я так понимаю чтобы сохранять уровни?
|
Ответ: Вопросы от новичка
Для сохранения различных данных, не только для уровней. Часто например использую сериализацию для формирования запросов на сервер.
|
Ответ: Вопросы от новичка
При использовании ScriptableObject для инвентаря столкнулся с проблемой получения нужного ScriptableObject'а через код. Сделал костыль-базу_данных где есть List<>, который заполняю всеми доступными для инвентаря ScriptableObject'ами через редактор и далее в коде уже ищу по имени нужное. Есть ли еще какие-нибудь варианты поиска нужного ScriptableObject через код?
|
Ответ: Вопросы от новичка
Помести в Resources и делай загрузку из ресурсов по имени.
PHP код:
|
Ответ: Вопросы от новичка
Цитата:
корутина-то в общем потоке работает. |
Ответ: Вопросы от новичка
Как из unity3d editor выгружать не нужное? При запуске юнити занимает в памяти 176мб, но после работы в течении дня начинает занимать в памяти уже ~500мб. Так же замечал иногда, что каждую секунду процесс начинает потреблять на пару килобайт больше и через какое то время начинает отжирать довольно много памяти. Никаких юзер скриптов работающих в редакторе у меня нет за исключением атрибута [CreateAssetMenu] в одном из скриптов. Так же никаких левых ассетов из стора и кряков не использую.
|
Ответ: Вопросы от новичка
Цитата:
|
Ответ: Вопросы от новичка
Как в играх делают частичную паузу допустим при диалогах, всплывающих окнах при которой всё кроме ключевых персонажей, объектов останавливается?
Время ставить в ноль получается не вариант, ибо остановится вся игра. А делать в каждом скрипте проверку на что то типа GameController.IsPause как то бредово. |
Ответ: Вопросы от новичка
Цитата:
Если у тебя запуск игровой логики на обсчёт сконцентрирован в одном месте (или хотя бы в Update() класса, от которого всё игровое наследуется, и внутри родительского Update() происходит запуск виртуального DoLogic()) - это легко решается. Оверхед от вкручивания чуть более громоздкой архитектуры окупается :) |
Ответ: Вопросы от новичка
Цитата:
|
Ответ: Вопросы от новичка
Блин, никак не пойму как крутить объект типа LookAt вокруг определенной оси. Типа как вращается LineRenderer. Т.е вокруг оси направления dращается LineRenderer.
Красные - как есть, голубые - как надо. Это квады, кручу выставляя ось right. |
Ответ: Вопросы от новичка
Не особо понял что там нарисовано и как что крутишь, я обычно прибегаю к векторному произведению и восстанавливаю нужной мне осью не правильную.
А в твоем случае - сделай пустышку (парента), поверни внутри нее свой квад как надо и делай лук эт этой пустышке. |
Ответ: Вопросы от новичка
Цитата:
Что бы стримеры всегда располагались на этой оси и смотрели на камеру. Логично, что если 2 подковы будут параллельны взору, то я не увижу эти квады, но этого и не нужно. |
Ответ: Вопросы от новичка
Цитата:
Вторым параметром можно задать плоскость относительно Look-вектора. Скорее всего в твоём случае будет что-то типа: Код:
var magnetPoseDiff = magnetB.position - magnetA.position; |
Часовой пояс GMT +4, время: 04:24. |
vBulletin® Version 3.6.5.
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Перевод: zCarot