繁体   English   中英

在js脚本中访问C#变量

[英]Access C# variable in js script

过去,我通过执行其他Java脚本访问变量

static var somevar;

在一个脚本中。 在另一个方面:

 OtherScript.somevar;

但是我需要从js脚本中的C#代码访问变量。 我试过了:

Public static bool somevar;

在C#文件和js文件中:

OtherScript.somevar;

但是我得到了错误:js文件中的未知标识符“ somevar”

只需将您的Unityscript文件放在PluginStandard Assets文件夹中。


说明:以“标准”方式,您只能从C#脚本访问Unityscript变量,但不能相反。 那只是C#代码在Unityscript之前被编译。

因此,为了实现您要执行的操作,必须将Unityscript文件移动到“特殊”文件夹(在Unity中,它们是PluginStandard Assets的文件夹),以便首先对其进行编译。

之后,您应该使用通常的逻辑来实现访问。

您不能从JS调用静态对象并调用其属性。 您将必须获得Unity GameObject的帮助才能将对象作为组件获得,因为一切都是Unity中的ObjectComponent。 然后使用该组件(技术上为脚本)作为参考。

GameObject名称为“ MyCsharpGameObject” <-具有脚本的GameObject

然后使用。

theCscharpscript : OtherScript;
theCsharpscript =  GameObject.find("MyCsharpGameObject").GetComponent("OtherScript");

关于JS的用法

theCsharpscript.thevariable;

请记住,在MonoDevelop中使用JS并不能提供智能,这只是正常现象。 但是,您不能访问未附加到GameObject的静态“类”。

如果您坚持要这样做。 然后检查安德里亚的答案。 但是他的解释可能会让您难以理解。

但是总结一下他说的是。 C#在NameSpace中工作,而JS不是NameSpace的一部分,因此至少需要在其中包含它,并且NameSpace仅仅是项目中的文件夹位置。 就那么简单。

但是,您必须始终记住在其中使用PragmaStrict,因为即使您没有从它进行扩展,它也将始终转换为MonoDevelop调用。

希望这对您有所帮助。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM