ReorderableList позволяет создать более качественный интерфейс с помощью заранее заготовленного контрола для списков и перечислений.
@Devion: alexprey, именно. Можно вообще любой класс рендерить, просто указываешь делегат и поехали :) 2 1.5K
Для создания редакторов порой приходится делать собственные браузеры, которые так или иначе используют нативные изображения.
Хотелось бы рассказать немного о том, как этого добиться.
@Devion: alexprey: var icon = defaultIcon ?? previewIcon; Может быть наоборот? истинно так 2 2.2K
При создании собственных контролов в нативном UnityGUI зачастую используется метод GUIUtility.GetControlID(FocusType.Native), чтобы получить новый ID.
Однако данный способ имеет два существенных минуса, делающих код непредсказуемым.
Статья
@Devion: alexprey: Добавь в контрол поле ID и записывай туда GUID Извини алекс, но коммент не к теме. Это не винформс, нативный гуишник устроен иначе. Так делать не нужно. Это к теме о GUILayout и подобном, в котором объектной модели нет вообще, все рисование зависит от "проходов". Классы ты там не строишь, и гуи отрисовываешь функционально. Layout проход жует id в обязательном порядке чтобы автоматически рассчитывать макет. Активность объектов жестко завязана на int'e Скопировать в буферGUIUtility.hotControl GUIUtility.keyboardControl HandleUtility.nearestControl HandleUtility.AddControl() Event.current.GetTypeForControl() и все такое. Так же есть целый ряд методов, которые "жуют" ID для рисования, формирования новых эвентов и т.п. В силу неконтролируемости данных и возможности изменять их извне налету об объектной модели даже нельзя заикаться, это будет неудачная попытка. Потому все эти GUID'ы для этой системы - не подходят, они ж вообще стринговые и не информативные. Вот скажем есть задача - нужно строго заставить редактор выделить третью точку в массиве меша - либо ты просто юзаешь так как сказал я, либо зачем-то заводишь служебный класс с гуидами и пытаешься синхронизировать его с объектами (и в результате все равно обламываешься, если юзер непредвиденно подменил меш). Конечно проблему можно решить, начав запихивать эти данные в игровой билд, специальные классы делать для массивов и так далее, чтобы везде можно было поймать гуиды, под любым индексом, для любых данных, которые потом переводить в хеш. Но я считаю это дико некультурно и неправильно, тем более когда есть вот такое элегантное решение ) 2 2.9K
Во время рисования через Handles/Gizmos/GL вы можете столкнуться с проблемой, которая заключается в том, что нарисованные треугольники и линии начинают "играть" на находящемся рядом меше.
Помимо этого, эффект не статичен, линии начинают прыгать при изменении параметров обзора камеры.
Статья

Разработка редакторов - это просто!

Данная статья - самоучитель от меня в мир редакторов Unity.
Да, не сказать, что я все вопросы для себя там устаканил и знаю точно как всё сделать правильно - но опыта в них у меня достаточно, чтобы рассказать о том, как устроен этот процесс
Хочу заметить, что данная статья не рассматривает способы взаимодействия с…
Статья

25 книг для разработчика

Предлагаем подборку всегда актуальных книг по программированию, геймдизайну и концепт-арту для новичков и бывалых бойцов геймдева. Конечно, во главе профессионального развития стоит практика, но эти книги сэкономят ваше время и позволят не выдумывать велосипед заново.
Статья
@DasBro: Вот ещё интересная книга: //www.ozon.ru/context/detail/id/7577936/ 9 8.7K
Хорошая цитата про гуманитариев. Не могу не поделиться.
Упрощённый ресурс
621
Недавно я столкнулся с рядом проблем в сериализации Unity, которые свели на ноль возможность построить определенную архитектуру. При том ранее такая архитектура была возможна - мне всего-то навсего нужно было построить "дерево" из классов.
Вкупе с тем, что стандартная сериализация уже несколько раз серьезно давала мне пощечину в реализации редакторов - это привело меня к тому, чтобы попробовать написать собственный "альтернативный" вариант сериализации.
@Devion: alexprey: одинаково, но коду придаст гибкости и расширяемости Я заапдейтил предыдущий пост. Результат оказался в три раза медленнее. По сути эти переборы можно вообще убрать, сделать один перебор на объект. Но в этом случае функции считывания/записи станут еще уродливей, будет одно длинное такое спагетти. UPD: В общем. Нашел мыслю как сделать только по одному перебору за объект. Меньше никак, но там можно грамотно их расфасовать, закидывая то, что реже используется на дальние проверки. В результате будет разделенная логика в отдельных файлах, каждый из которых создается лишь один раз, что еще один плюс. Как доделаю, накину обновление. UPD: Залил изменения. Теперь каждый случай обособлен в отдельный класс, благодаря чему убралось несколько свитч-кейсов Остался перебор, отвечающий за перевод в константу. Там пусть лучше так и будет Немного комментов Переиначил ByteConstants в ObjectTypes Добавил кеширование полей в классах и структурах UPD: чё т долговато выходит. Попробовал на реальных операциях. один объект жует несколько секунд. Думаю дело в расширении массива, в общем будем разбираться. UPD: да, дело таки в расширении массива, без этого все летает. Надо обдумывать как сделать так, чтобы объект перерасчитывался пореже UPD: Исправил. Теперь массив с байтами умножается на два, когда заканчивается, а уже после всего ресайзится до короткого. UPD: Добавил параметр capacity к ByteObject, чтобы можно было предсказывать начальный размер массива. По умолчанию он равен 16, не может быть меньше 8 (хотя размер массива - может быть, так то), и автоматически изменяется при изменении массива (ну чтобы две записи подряд не нагружали шибко). Вот такого кода хватает для хранения дерева в окне: ((код [MenuItem("Window/Test")] public static void Open() { var w = GetWindow<TestWindow>(); w.tree = CreateTree(); } public void OnEnable() { tree = treeSaver.Get<TreeView>(); } public void OnDisable() { treeSaver.Set(tree); 4 1.7K
Решил еще раз попробовать осилить редактор сценариев. В пятый раз, да.
Ничего пафосного в этот раз анонсировать не буду. Просто оглашу мысли по поводу.
На мой взгляд ошибкой моей является то, что я пытаюсь прыгнуть выше головы. Сначала планирую супер гига мега инструментарий, из расчета на который пилю убер…
Новость
@Devion: линейка методов - цепочка вызовов. a.b().c() вместо c(b(a)). Это самопровозглашенное понятие от незнания, как это еще обозвать. Сегодня я склонен полагать что нужно сделать что-то, чем можно пользоваться, и при том лучше, чем то что уже есть (нативный редактор выражений может использовать в качестве объектов только GO и вызывать только методы-инстанса, а в качестве параметров использовать только конкретные значения, без возможности указать встроенные выражения). Затем уже, после того как будет это что-то чем можно пользоваться - наращивать по приоритетности. По крайней мере если что-то не получится - это не будет значить, что нужно начинать с самого начала. 5 2K
Буквально вчера в Unity-сообществе состоялся вебинар по теме продаж в Asset Store.
Всем, кто хочет начать там зарабатывать - очень советуется к просмотру.
1.2K
Смысл данной статьи специфичен. Она вовсе не имеет тематики, ее подчасти просто являются списком используемых в Unity имен для тех или иных ситуаций.
При наличии чем дополнить - кидайте в комментарии.
Никакого смысла оформлять их внутри какой-то другой статьи нет, по причине того, что их слишком много (и…
@Devion: prog, мне кажется это удобным для юзера, попавшего на страницу из гугла. Зашел и посмотрел, без лишних телодвижений. 4 1.6K
Сегодня я оказался с новым проектом на руках, ну и естественно нужно было вникать в код, который написан был до меня.
В таких случаях могут и возникают ситуации, при которых не понятно, где используется скрипт, который ты сейчас читаешь. Примерно в такой же ситуации оказался сегодня я, когда обнаружил скрипт, абсолютно не связанный с остальным кодом. Вопрос был таков - а в каких сценах он вообще используется?
1.3K
Я уже выкладывал код данной монады в разделе "программирование". Однако Unity 5 имеет весьма специфичное сравнение с null для своих объектов, из-за чего тот код не совсем валиден.
Так скажем это "код с костылем".…
854

Инструментарий разработчика

Данная статья вовсе даже не статья. Скорее просто напоминалка желающим осваивать юнити.
Здесь перечислено, что конкретно вам понадобится для разработки.
@devpilgrim: Devion писал: ну просто поставить наследника обычно слишком простая операция чтобы запариваться. Но есть ряд шаблонов, которые лучше бы забить один раз и не париться. Для этих целей лучше воспользоваться бесплатным расширением для UnityEditor написанное разработчиками Unity: Create Script Dialog Правда он устарел, выдает ошибки и предупреждения ибо был написан еще для Unity 3.4.2. и с тех пор не обновлялся (последнее обновление Jan 19, 2012). Но есть исправленная для Unity 5 версия + несколько общих (совсем незначительных) оптимизаций. Create Script Dialog С помощью этого расширения можно сделать и шаблоны для VS (по крайней мере для тех, кому это в новинку - будет намного проще). Правки мои, просто удалена ссылка на устаревший визуальный стиль и внесены небольшие правки в соответствии со стандартами написания кода для NET... 18 8.8K

WIP - Warcraft 3 To Unity Converter

В данном ресурсе я хотел бы делиться с вами прогрессом по написанию одной наработки, которая очень кстати придет к нашему сообществу.
Данная наработка позволяет конвертировать модели из Warcraft 3 и полноценно использовать их в движке Unity.
@KotoBog: Скинь, будет интересно глянуть и поюзать же. Что ты как не родной :с 30 11.7K
Сегодня я хотел бы познакомить вас с темой, которую сам я не очень мог понять, пока не познакомился с UnityVS. А именно - как создавать DLL через студию да так, чтобы Unity не ругался. Обычный способ в нашем случае становится нетривиальным, ибо у Unity свои взгляды на эту тему. Тема простая, но нужная.
Приступим!
@alexprey: MF, тут идет речь про dll управляемого кода, так что на линуксе это тоже будет работать. 3 5.3K

Безумно короткий самоучитель по C#. Часть 1 из 2.

Пусть это будет пособие для студентов ПТУ, вчера жевавших семки, а сегодня решивших МНЕ СРОЧНО НУЖНО ОСВОИТЬ ЯЗЫК ПРОГРАММИРОВАНИЯ. Короче, как я.
Warning! Это самоучитель:
  • Без разжевывания
  • Поверхностный
  • Не полный
Статья
@Devion: DasBro, может быть когда-нибудь :) 27 18.4K

Дайджест по публикациям 07.02.2015

Это первый дайджест по нашему проекту - какие наработки в нем появились со дня его основания.
С сегодняшнего дня было принято решение продолжать вести проект в полуоткрытом режиме, дабы дать гуглу знать о нас.
Новость
@AsagiriGen: Все-таки добавил паки моделей, а я ни заметил, спасибо. 4 4.4K
Данный проект представляет из себя склад разнообразных платных Unity наработок.
Пользователям, проявившим активность в разделе Unity отправляется инвайт на вступление в этот проект.
Проявлением активности считается:
  • Написание статьи
  • Добавление наработок/скриптов собственного производства
Упрощённый ресурс
5.5K

Рисование для отладки

Часто случается, что требуется посмотреть, что за вектора у тебя получаются в том или ином участке кода. Для такой функции конечно, можно выносить все в отдельные переменные, подключать рисовалку по Gizmos/Handles, но я решил поступить чуть проще и написать отдельный класс, который это делает.
@Anton Bryzgalov: Благодарствую! 2 3.4K
Всем привет, сегодня я пришел с легенькой темой, которая, однако, требует некоторых усилий на реализацию.
Когда программируются редакторы мы повсеместно используем нестандартные иконки (если, конечно, хотим сделать качественный продукт - нужно поработать над оформлением).
Предположим, что на выходе вы хотите получить некоторый редактор одним DLL файлом. Но вот иконки, которые вы вынуждены хранить в одной папке с проектом ну просто портят всю картину!
Все мы знаем, что есть стандартная возможность "пришить ресурсы к DLL". Именно это и делается с картинками.
Но вот о том, как с ними взаимодействовать - я сегодня и расскажу.
Статья
Под свои нужды понадобилось мне править странички в Mediawiki из кода.
Сначала я подумал пройтись по дорожке "Mediawiki -> MySQL -> C# -> Unity".
Минус такого подхода минимум в том, что данные в бд хранятся по разному, да и чтобы поставить MySQL под юньку - нужно импортировать библиотеки, а они вставали довольно криво туда.
Но потом понял, что эт всё не нужно - ведь есть чудесный api.php, прилагаемый к Mediawiki...
Компонент

Класс с математикой

Пишу сижу последние дни всякую простейшую математику, которая часто юзается.
В итоге вышел вот такой класс:
""
using System;
using System.Linq;
using System.Text.RegularExpressions;
using UnityEngine;
public static class CustomMath
{
Возвращает индекс минимального элемента
public static int…

99%

Что ж, я почти закончил редактор.
Однако с релизом всё-таки немного обождем, ибо жду от заказчика средств за проект, который включает так же и вот этот инструмент.
Последняя новость как я понял не слишком обрадовала наше сообщество - было много замечаний, которые я в той или иной мере услышал и постарался переделать так, чтобы было хоть чуть-чуть удобнее.
Новость
В общем сегодня пришлось слишком много работать с рефлексией, доставая кучу интерналовских функций и полей из библиотеки. Работал себе, работал, а потом подумал - а чего бы не упростить?
@Kozinaka: Extravert, в качестве инструмента конечно! Даже если что-то и накроется, так всегда можно поправить. 5 2.1K
Данный ресурс создан для размещения и выполнения заказов на 3D и 2D модели для игр.
Популярные форматы моделей: FBX, DAE, STL, IGES, 3DS, OBJ, 3MF, STEP
@Lord_Teo: Нужно модель виспа из рефорджед перенести на unity. Может кто с этим помочь? 2 10.4K
Закрывая тему попапов в Unity - я перепилил классный попап на новый лад.
В качестве основы был взят попап, используемый для добавления новых компонентов в инспекторе.
С помощью магии он был переработан и теперь применяется в целом для любых элементов, которые нам угодны.
1.9K
Собственно закончил с первой версией сериализации функтора. Выкладываю в открытый доступ.
В целом версия рабочая, но работоспособность таких вещей как например локальные переменные не проверял - вполне вероятно там придется дорабатывать.
Все сериализаторы скопилированы в библиотеку. Помимо сериализации функтора…
Чем больше я наполняю cssGUI, чем дальше я лезу в дебри GUI Unity, тем больше я осознаю, насколько он тупо устроен.
И вдруг внезапным просветлением понимаю, что html и css - дают людям райский дизайн
Абсолютная неконтролируемость поведения в GUI не дает возможности его стандартизировать в полной мере.
Он конечно…
Новость

Новости с моего фронта

Относительно недавно я публиковал новость о том, что первая идея моего редактора потерпела крах - оказалась неудобной и не юзабельной в коде. И предположил "новую модель", которую будет иметь редактор.
Собственно скрин этой модели я и хотел бы сегодня вам предоставить.
Новость
@ScorpioT1000: ну так сверстай на html5, его полюбому можно встроить, это же юнити 36 7.7K
`
ОЖИДАНИЕ РЕКЛАМЫ...
Scroll Lock - быстрая модерация