[英]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文件放在Plugin
或Standard Assets
文件夾中。
說明:以“標准”方式,您只能從C#腳本訪問Unityscript變量,但不能相反。 那只是C#代碼在Unityscript之前被編譯。
因此,為了實現您要執行的操作,必須將Unityscript文件移動到“特殊”文件夾(在Unity中,它們是Plugin
和Standard 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.