Pull to refresh

Comments 11

Класс Debug позволяет выводить текст, ошибки, рисовать линии, ставить редактор на паузу и тд.

Handles используют для отображения и управления объектами в окне сцены.

и код превращается в адскую помесь рантайм кода с эдитор-кодом, разделенное флагами условной компиляции. По возможности все редакторское нужно выносить во внешние инспекторы, которые не поедут в конечный билд, например, так:

<code class="cs">[DrawGizmo (GizmoType.Active | GizmoType.NonSelected)]
        static void OnDrawGizmos (ZoneSector obj, GizmoType gizmoType) {
            Gizmos.color = Color.yellow;
            Gizmos.DrawWireSphere (obj.transform.position, obj.Radius);
            Gizmos.DrawIcon (obj.transform.position, "icon-sector");
        }</code>

Юнити сама детектит что нужно показывать по типу первого параметра, атрибутом можно регулировать когда оно будет отрисовываться. Те рантайм код получается чистым.

Допустим, вы построили UI с 30 достижениями, они отображаются и скролятся как вы задумали. Вам необходимо заполнить List-ы в классе ссылками на них. Нужно 30 раз перетянуть названия, 30 раз описания и тд.

Такое вообще всегда делается из кода: делается префаб одного айтема и в цикле оно генерится, инициализируется, втыкается в корень списка — никаких ручных настроек. А если потребуется поменять визуальный вид или логику поведения вложенных виджетов — перенастраивать опять все руками?

<code class="cs">for (var i = 0; i < ShopPowerupVisualItem.PowerupCount; i++) {
                            var item = Instantiate<ShopPowerupVisualItem> (PowerupVisualPrefab);
                            item.transform.SetParent (PowerupRoot, false);
                            item.transform.localScale = PowerupVisualPrefab.transform.localScale;
                            item.Init (i, false); // Тут как раз инициализация айтема и всех его свойств происходит.
                            item.OnSelect += OnPowerupSelect;
                        }
                        PowerupRoot.GetComponent<UIGrid> ().Reposition ();
                        PowerupRoot.GetComponentInParent<UIScrollView> ().SetDragAmount (0f, 0f, true);</code>
Нормально редактор хабры работает с повторным редактированием кода… Но суть, думаю, понятна.
и код превращается в адскую помесь рантайм кода с эдитор-кодом, разделенное флагами условной компиляции.

Просто к слову: есть ещё один хитрый вариант с C# — partial классы. Editor-only код можно писать отдельным файлом с общей условной компиляцией, а runtime логику как обычно в одном месте без лишней каши.
UFO just landed and posted this here
и код превращается в адскую помесь рантайм кода с эдитор-кодом

Да, есть и такой способ. В моем случае я не чувствую нагромождения кода от лишних 10 строк кода. Может я люблю держать в одном файле, может у меня не было больших нагромождений — все это дело вкуса, или указания свыше (тимлид и тд)

Пример
#if UNITY_EDITOR
    void OnDrawGizmos()
    {
        Gizmos.color = Color.red;
        if (_currentEnemy != null)
            Gizmos.DrawLine(myTransform.position, _currentEnemy.transform.position);
    }
#endif


Такое вообще всегда делается из кода

Опять же дело привычки. Кто то любит делать все кодом, некоторые собирают визуально. Когда наступает рутина — написать небольшой скрипт.

Статьей я просто хотел напомнить как делать некоторые вещи нагляднее, а не делать по моему.
А если потребуется поменять визуальный вид или логику поведения вложенных виджетов — перенастраивать опять все руками?

Плохие привычки нужно искоренять.
Пример не про то как строить UI кодом, а как заполнить массив ссылками.
Вроде как и полезная информация, но статья "так себе". Местами приходилось гуглить отдельно, чтобы понять, как же оно на самом деле работает.
Пожалуйста, не используйте слово "помогатор". И "помогатель". Это чудовищно звучит, и просто безграмотно — если мы только не говорим про маленьких шурупо-образных человечков со встроенным "помогатором" — детский мультик можно простить. Есть огромное количество альтернатив в русском языке и адекватных жаргонизмов, которые лучше передадут смысл, не калеча при этом тех, кто искренне любит русский язык.
Утилиты, возможности, инструменты, расширения, методы, фичи, дополнения, функции, на худой конец — "полезности".
А "фичи" значит по-русски грамотно? Вообще, не нужно было переводить, есть уже устоявшееся выражение "хелпер" — прямой транслит с английского, тут уже ничего нового не придумать и тем более не заменить ни на один из предложенных вариантов. Автор просто пытался донести суть до как можно большего количества людей.
Спасибо, в том числе и комментирующим) Узнал несколько полезных моментов для себя. Думаю если говорить о вещах, помогающих в разработке и тестировании, то можно упомянуть и профайлер. http://docs.unity3d.com/ru/current/Manual/Profiler.html
Sign up to leave a comment.

Articles