unity-game-engineunityscriptboo

How to use variables from UnityScript in Boo?


I've been trying to implement this but without any success. While I was googling around I saw that this is somehow possible but I can't reach it by myself obviously. This my file tree:

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

I want to use variable from BlokSistem.js in UI.boo, but without any success. I want to change one and print another. Here is my code for now (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

I get this error on line 7 (commented it in code above):

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

This is how I declared my variables in BlokSistem.js:

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

Thanks in advance for help.


Solution

  • The problem here is compilation order. At the time where your Boo and JS code are compiled, they don't have access to each other. But there is a workaround for that.

    Plugin code will be compiled before the "regular" code in your assets. So if your Boo code relies on something in your JS (UnityScript) code, you can put the JS code inside a folder named "Plugins". Keep in mind that this (logically) works only one way around though. So if your JS code ever relies on something in the Boo side, you're out of luck.

    This does however (if it is your own code) usually imply it's a good idea to switch to a single language and stick to it. And with focus being more on C# than on UnityScript and particularly Boo, you might want to consider moving over.