Comments 4
Хороший пост, как всегда.
С высоты своего бесконечного опыта работы с LeoECS Lite (4 месяца) хочу отметить, что использование EcsCustomInject на этапе разработки усложняет рефакторинг, потому что контролировать что куда заинжектил можно только через комментарий к соответствующей системе, лучше пользоваться внедрением через конструктор.
И уже отдельно для автора, вот такой класс в эдитор неймспейсе заменит твой CellView и позволит не насиловать юнити атрибутом [ExecuteAlways]
[UnityEditor.CustomEditor(typeof(CellView))]
public class CellViewEditor : UnityEditor.Editor
{
[DrawGizmo(GizmoType.Active | GizmoType.Pickable | GizmoType.NonSelected)]
public static void RenderGizmo(CellView view, GizmoType gizmo)
{
Gizmos.color = ((gizmo & GizmoType.Selected) != 0) ? Color.green : Color.cyan;
//...твой скрипт отрисовки
}
}
Спасибо.
Ну инжект в системы внедряет все данные сразу во все экземпляры систем.
Насчет CellView, там атрибуты под дефайном и будут работать только в редакторе, так что по идее норм. Вообще, скорее всего стоит разделить компонент на два: один отвечает за снап, другой за отрисовку клеток, так как магнитить к сетке нужно будет, скорее всего, не только клетки.
Добрый день! Спасибо за статью! У меня такой вопрос. А для чего предназначен в вашей системе класс Пул компонентов?
Добрый вечер. Рад, что понравилось.
Пул компонентов дает возможность добавлять компоненты к сущности или удалять их. Рекомендую прочитать README в репозитории https://github.com/Leopotam/ecslite
Создание dungeon crawler'а с LeoECS Lite. Часть 1