#reactjs #unity3d #babeljs #unity-powerui
#reactjs #unity-игровой движок #babeljs #unity-powerui
Вопрос:
Привет, я пытаюсь заставить BabelJS и React работать из Unity, чтобы я мог использовать JavaScript в новом стиле, например Arrow functions () => {}, из PowerUI. По-видимому, Install=Package из Visual Studio фактически не позволял Unity получать пакеты, поэтому я вручную установил AdvancedStringBuilder, JavaScriptEngineSwitcher.Ядро, JSPool, Newtonsoft.Json и React.Ядро и просто удалили библиотеки DLL net45 в папку Unity Assets, и ошибок компиляции нет.
Однако, когда я действительно хочу использовать BabelJS так, как показано в документации (для C #): (в начале файла cs):
using React;
затем, позже, когда я захочу использовать babel-я использую исходный код javascript для PowerUI для компиляции (PowerUI / Source / JavaScript / JavaScriptEngine.cs строка ~ 198):
var babel = ReactEnvironment.Current.Babel;
var newSource = babel.Transform(source);
Engine.Execute(newSource); // PowerUI code
Я получаю эту ошибку (от PowerUI, но то же самое применимо в любом случае):
React.TinyIoC.TinyIoCResolutionException: Unable to resolve type: React.IReactEnvironment
at React.TinyIoC.TinyIoCContainer.ResolveInternal (React.TinyIoC.TinyIoCContainer TypeRegistration registration, React.TinyIoC.NamedParameterOverloads parameters, React.TinyIoC.ResolveOptions options) [0x001ce] in <c8732b4de84a482c9ad31b41d7faf4d8>:0
at React.TinyIoC.TinyIoCContainer.Resolve (System.Type resolveType) [0x00011] in <c8732b4de84a482c9ad31b41d7faf4d8>:0
at React.TinyIoC.TinyIoCContainer.Resolve[ResolveType] () [0x00000] in <c8732b4de84a482c9ad31b41d7faf4d8>:0
at React.ReactEnvironment.get_Current () [0x00005] in <c8732b4de84a482c9ad31b41d7faf4d8>:0
Похоже, React не работает, кто-нибудь знает, что еще я должен сделать, чтобы это заработало?
Комментарии:
1. Unity не поддерживает JS. Он использует UnityScript. Большая часть вашего предыдущего опыта работы с JS неприменима к нему, включая Babel.
2. @estus это применимо, потому что я использую PowerUI, который ожидает ввода ES5, и я пытаюсь преобразовать входной javascript в этот из более нового синтаксиса javasciprt
3. @estus все, что мне нужно знать, это как использовать BabelJS для преобразования нового JavaScript в новую строку JavaScript из unity. Мне просто нужна возвращаемая строка
4. То, что вы описываете, специфично для PowerUI и Jint, а не для Unity в целом, не так ли? powerui.kulestar.com/wiki/index.php?title=JavaScript
5. @estus нет, я просто пытаюсь взять строку в ES6 и преобразовать ее в строку, просто перемешивая, строка также является объектом Unity, а powerUI exectue является побочной точкой. Все, что меня интересует, это строка, ничего общего с PowerUI, все, что PowerUI делает, это принимает новую строку. Все, что я хочу, это: строка
Ответ №1:
Вы не можете использовать BabelJS или react в Unity.
начиная с Unity 2018.2, единственным поддерживаемым языком является C #. Вопрос взят из «Программирование в Unity»
Какие языки программирования вы можете использовать в Unity?
Unity поддерживает C #, язык отраслевого стандарта, имеющий некоторое сходство с Java или C .
До Unity 2018.2 поддерживался язык, похожий на JavaScript, под названием UnityScript. Однако, аналогично, это не Javascript и даже не основано на стандартах ECMA.
Путаница понятна, поскольку даже некоторые официальные ресурсы Unity ссылаются на «UnityScript» как на «Js / Javascript», но эти два совершенно разные.
Более подробное объяснение взаимодействия Javascript и Unityscript смотрите на этой странице wiki.unity3d
Комментарии:
1. ReactJS.NET это библиотека, созданная на C #, я могу импортировать библиотеки DLL в unity нормально, это не имеет ничего общего с javascript, я просто пытаюсь использовать библиотеку C #, называемую ReactS.NET для компиляции СТРОКИ JavaScript в другую строку JavaScript; и JavaScript МОЖНО использовать в unit, кстати, через PowerUI, но это не то, о чем я спрашиваю, я просто хочу знать, как настроить ReactJS.NET в Unity точно так же, как это может быть настроено во многих других программах на основе C #
2. если это не имеет ничего общего с reactjs, тогда вам следует удалить тег
3. @oshellInever сказал, что это не имеет ничего общего с reactj, s is отмечает todo с JAVASCRIPT, the reactJS.NET библиотека просто преобразует строку (которая, оказывается, содержит javascript) в другую строку (которая также может быть javascript), но я заинтересован в использовании ReactJs.NET расширение, ничего общего с javasript