Добавлен , опубликован
Всем привет кто меня читает, вот с какими новостями я к вам сегодня пожаловал.
Долго думая над тем, как сделать редактор удобней я пришел к выводу о том что нужно кардинально переработать интерфейс и что привычное всем дерево не самый лучший способ отобразить эти данные.
Не то чтобы он был сильно плох - но реализация дерева даже в переписанном виде была очень нагрузочной и нестабильной. Помимо этого я уже попробовал свою систему в действии и результаты меня огорчили:
  • систему было просто сложно использовать.Я не задумывался при разработке над тем, чтобы я мог редактировать сценарий из кода, скажем, автоматом добавить какое-то действие в триггер, если он висит на нужном мне объекте. Приходилось лезть очень далеко, чтобы "устаканить" такие вопросы в том решении которое я сделал.
  • это ненаглядно. Когда я писал редактор диалогов я успел в этом на все 100 убедиться. Соль была в том, что благодаря моему редактору триггеров к веткам диалога можно было прикреплять кастомные условия. Но не было способа прочитать диалог "на ходу" - чтобы посмотреть условия, и вообще есть ли они приходилось щелкать по кнопкам, открывая большое окно. В общем имхо это плохо, что нельзя сразу видеть какое условие висит и есть ли оно вообще, не открыв редактор.
  • дерево это долго. Чтобы заполнить какой-либо элемент приходилось по этим командам долго путешествовать, чтобы добраться до "внутренностей".
Я не спорю, этот вариант имеет много своих приятных особенностей, например я мог добавить туда "калькулирование выражений из текста" на ходу, но я надеюсь, что и в новом варианте у меня получится сделать что-то подобное.
Короче, я переделал редактор триггеров. Были причины, и того привычного решения "как в варкрафте", которое всем понравилось - не будет.
И я, кстати, даже не удивлен тому что в нативе в юнити нет редактора сценариев - все они делаются через заднее место и мой в том числе. Проблема в том что юнька, несмотря на много дружелюбных вещей - очень плохо реализована в вопросах сериализации, а это в свою очередь сказывается и на таких системах, так как для их реализации эти фичи необходимы. В частности это Generic-типы и хранение данных в типе object - эти фичи сериализация использовать не разрешает (данные просто не будут сохраняться), а костыли обходятся дорого.
В общем сейчас редактор будет таким - дальше - будет видно.
alexprey предлагал мне сделать так, чтобы сценарии конвертировались в код и работали быстрее некуда. Скорее всего - именно это и будет сделано в перспективе. Но в релизе того с чем можно работать, который кстати уже не за горами, будет таки менее производительная версия, не генерирующая кода и работающая через рефлексию.
Кстати - читал про рефлексию, узнал что она не то чтобы просто медленней, а в сотни раз медленней, чем реальный код.
И еще есть вариант вот какой - написать сериализуемый функтор. Функторы (лямбда выражения, короче) это выражения аля:
() => DoAction();
Если вы работали с C#, наверняка вы знаете что это. Так вот, есть у меня сведения, что можно сделать такой вот функтор сериализуемым и компилировать код перед первым исполнением этого функтора. Если вдруг получится - то это вообще прогресс для всех прогеров в юньке, а не только для моего редактора. :) Ибо сериализация выражений - ну это просто конфетка, так как выражения сами по себе очень полезная фича языка.
Вот такие возможности планируются.
И да, скрины, увы пока мало внятные, ибо до конца я еще все это не соединил. В общем наши команды вместо строк в дереве теперь будут выглядеть вот так:
То есть все уровни вложенности доступны сразу, просто получаются "прямоугольники в прямоугольнике". И пара кнопочек у каждого прямоугольника для изменений.
В общем такие новости, не знаю даже - плохие они или хорошие, но редактор будет выглядеть иначе, чем ожидалось изначально.
`
ОЖИДАНИЕ РЕКЛАМЫ...
27
Jusper, да, конечно. Кроме того я задействую там некоторые скрипты, которые так же опубликую отдельно от этой тулсы. Они тоже сопровождаются соответствующей документацией, которую я уже тихонько заполняю
Чтобы оставить комментарий, пожалуйста, войдите на сайт.