Pull to refresh

Unity — выбираем редактор javascript

Reading time3 min
Views34K
Итак, мы хотим написать игрушку на Unity. Юнити предоставляет нам выбор из трех скриптовых языков — Javascript, C# и Boo.

Т.к. с Boo разбираться вообще не хотелось, то для нас стоял выбор JS vs C#. Для наших целей больше подошел именно JavaScript (на самом деле, правильнее было бы называть его UnityScript), т.к. он имеет более мягкую типизацию, да и переводить существующий у нас код из флэшового ActionScript'а было бы гораздо проще.

Но мы столкнулись с проблемой, которую вообще не ожидали обнаружить.

Вы не поверите, но для Unity нет нормального редактора JavaScript'а (речь идет о разработке под Windows, хотя под Мак ситуация, как я понял — не лучше).

Список редакторов можно посмотреть в неофициальной вики.

Итак, что же я хочу от редактора?

Конечно же, я хочу умный и развитый auto-complete (intellisence).

Будем тестировать редактор на следующем коде:

Отдельно создадим тестовый класс TestClass.js:
public class TestClass {

    public static var var_stat: int;
    public var var_pub: int;
    public static function TestFunc(): void {}

}


Теперь создадим второй класс, на котором и будем тестить auto-complete:
public class TestClass2 {

    public var var_pub: int;
    protected var var_prot: int;
    private var var_priv: int;

    public static function StatFunc(): void {}

    private function PrivFunc(): void {}

    public function get var_getter(): int { return var_priv; }

    public function DoTest() {

        var var_int: int;
        // здесь будем тестить auto-complete

    }

}

Писать код будем в месте, помеченном комментом и будем хотеть увидеть автокомплит.

Редакторов я нашел 3 штуки:
  1. MonoDevelop, поставляющийся в комплекте с Unity
  2. UniScript Editor (здесь)
  3. UnityDevelop (модифицированный FlashDevelop древней версии + классы для unity 3.5 — здесь)

В табличке ниже я помечу плюсиками те ситуации, где автокомплит справился.
auto-complete / функционал MonoDevelop UniScript Editor UnityDevelop
TestClass + - +
TestClass2 - - +
TestClass.TestFunc - - +
TestClass2.StatFunc + - +
var_int + + +
var_pub + + +
var_prot - + +
var_priv - + +
var_getter - - +
this.PrivFunc - - +
Random + + +
Random.Range + + +
Random.Range(общая подсказка по параметрам + + ± (хелп только при
выборе функции)

Random.Range(подсказка по параметрам в зависимости от параметра +
- -
Instantiate - + -
Instantiate(подсказка по параметрам - + -
var go: GameObject - + +
информация о переменной при наведении мышки - + +
информация о функции при наведении мышки - - +
ctrl+click (переход на определение функции/переменной) - - ± (F4)
дерево классов только текущий класс,
ломается на геттерах
(перестает показывать
что-либо)

только переменные,
только текущий класс

все отлично


И что же мы видим? В принципе, наилучшим выглядит UnityDevelop. Но неудобный хелп по функциям все портит. Возможно, если бы кто-то адаптировал свежий FlashDevelop под Unity — все было бы хорошо. Но никто этого не сделал (сейчас UnityDevelop построен на FD 0.9).

И ни один редактор не поддерживает Ctrl+Click.

Вывод? Не знаю… Писать на шарпах в VS?

А вообще — я удивлен, что Unity так безолаберно относится к своему редактору. Все-таки, — продукт недешевый ($1500 за про версию + еще $3000 за про версии под iOS/Android). Могли бы сделать что-то более вменяемое. Например, прикрутить к тому же Eclipse, как это сделали Adobe со своим Flash Builder (который, по сути, — является Эклипсом).

Если у кого-то есть опыт — welcome в комменты, с удовольствием выслушаю.

UPDATE: После всего этого я плюнул и сам поспособствовал появлению Unity Develop 4 (подробности и ссылки на скачивание в этом топике).
Tags:
Hubs:
Total votes 21: ↑16 and ↓5+11
Comments29

Articles