在Unity项目中使用React和BabelJS

时间:2019-03-21 07:55:28

标签: reactjs unity3d babeljs unity-powerui

嗨,我正在尝试使BabelJS和React在Unity中运行,以便可以在PowerUI中使用新型JavaScript,例如Arrow函数()=> {}。显然,Visual Studio中的Install = Package实际上不允许统一获取软件包,因此我手动安装了AdvancedStringBuilder,JavaScriptEngineSwitcher.Core,JSPool,Newtonsoft.Json和React.Core,并只是将net45 DLL放到Unity资产中文件夹,并且没有编译错误。

但是,当我实际上要使用documentation(对于C#)显示的方式使用BabelJS时: (在cs文件的开头):

using React;

然后,当我想对PowerUI的javascript源代码进行通俗化时(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 个答案:

答案 0 :(得分:2)

您不能使用babelJS或在Unity中进行反应。

自Unity 2018.2起,唯一受支持的语言是C#。从"Programming in Unity"

退出
  

您可以在Unity中使用哪些编程语言?

     

Unity支持C#,这是一种行业标准语言,与Java或C ++有一些相似之处。

Unity 2018.2之前,支持JavaScript的语言 similair ,称为UnityScript。但是,这不是不是 Javascript,甚至也不基于ECMA标准。

尽管如此,这种混淆是可以理解的,因为即使某些官方的Unity资源也将“ UnityScript”称为“ Js / Javascript”,但这两者是完全不同的。

有关Javascript和Unityscript之间的更详细说明,请参见此wiki.unity3d page