如何在 Boo 中使用来自 UnityScript 的变量?

How to use variables from UnityScript in Boo?

我一直在尝试实现这一点,但没有成功。当我在谷歌上搜索时,我发现这在某种程度上是可能的,但显然我自己无法达到。这是我的文件树:

|-Game
|--Assets
|---Animacije
|---Skripte
|----*BlokSistem.js
|---Standard Assets
|----*UI.boo
|---Prefabs
|---Sprites
|---Game.unity

我想在 UI.boo 中使用来自 BlokSistem.js 的变量,但没有成功。我想换一个打印另一个。这是我现在的代码 (UI.boo):

import UnityEngine
import System.Collections

public class UI(MonoBehaviour):

       blokSistem as BlokSistem = GetComponent[of BlokSistem]() #this is line 7 which produces error

       def OnGUI() as void:
           GUI.Box(Rect(0,0,200,50), "Blocks")
           if GUI.Button(Rect(0,60,200,25), "Dirt = "+blokSistem.dirtAmount):
                blokSistem.selectedBlock = blokSistem.dirtBlock
           elif GUI.Button(Rect(0,60,200,25), "Grass = "+blokSistem.grassAmount):
                blokSistem.selectedBlock = blokSistem.grassBlock

我在第 7 行收到此错误(在上面的代码中对其进行了注释):

The name 'BlokSistem' does not denote a valid type ('not found'). 

这就是我在 BlokSistem.js 中声明变量的方式:

public var dirtAmount : int;
public var grassAmount : int;
public var selectedBlock : GameObject;

在此先感谢您的帮助。

这里的问题是编译顺序。在编译 Boo 和 JS 代码时,它们无法相互访问。但是有一个解决方法。

Plugin code will be compiled before the "regular" code 在您的资产中。因此,如果您的 Boo 代码依赖于 JS (UnityScript) 代码中的某些内容,您可以将 JS 代码放在名为 "Plugins" 的文件夹中。请记住,这(从逻辑上讲)只能解决一个问题。因此,如果您的 JS 代码曾经依赖于 Boo 端的某些东西,那您就不走运了。

但是(如果它是您自己的代码)这通常意味着切换到一种语言并坚持使用它是个好主意。由于重点更多地放在 C# 上而不是 UnityScript 上,尤其是 Boo,您可能需要考虑转移。