簡體   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