Используйте React и BabelJS в проекте Unity - PullRequest
2 голосов
/ 21 марта 2019

Здравствуйте, я пытаюсь заставить BabelJS и React работать изнутри Unity, чтобы я мог использовать новый стиль JavaScript, такой как Arrow functions () => {}, изнутри PowerUI.Очевидно, что Install = Package из Visual Studio на самом деле не позволял Unity получать пакеты, поэтому я вручную установил AdvancedStringBuilder, JavaScriptEngineSwitcher.Core, JSPool, Newtonsoft.Json и React.Core и просто удалил библиотеки net45 из ресурсов Unity.папка, и нет ошибок компиляции.

Однако, когда я действительно хочу использовать BabelJS, способ, которым документация (для C #) показывает: (в начале файла cs):

using React;

потом, когда я захочу указать исходный код 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 Ответ

2 голосов
/ 21 марта 2019

Вы не можете использовать babelJS или реагировать в Unity.

начиная с Unity 2018.2 единственным поддерживаемым языком является C #. Цитируется из «Программирование в Unity»

Какие языки программирования вы можете использовать в Unity?

Unity поддерживает C #, язык отраслевого стандарта с некоторыми сходствами с Java или C ++.

До Unity 2018.2 поддерживался язык similair для JavaScript, называемый UnityScript. Однако similair это не Javascript, и даже не на основе стандартов ECMA.

Хотя путаница понятна, поскольку даже некоторые официальные ресурсы Unity ссылаются на «UnityScript» как «Js / Javascript», но они совершенно разные.

Более подробное объяснение между Javascript и Unityscript см. На этой wiki.unity3d странице

...