Unity compilation order

Hello, I am working on a C# project which needs to utilize a js library. However that js library its self utilizes… C# libraries!

To get this to work properly, I will obviously need to set up a build order like this:

Step 1: Build C# libraries that the js library uses
Step 2: Build the JS library
Step 3: Build my own code

I read that one can use the Standard Assets folder to control the order of compilation… So I set up a little mockup of my problem…

First, I created a project with two script files:

One.cs:

using UnityEngine;
using System.Collections;
public class One : MonoBehaviour
{
	void Start ()
	{
		Debug.Log(Two.myFunc());
	}
}

Two.js:

#pragma strict
public static function myFunc()
{
	return "Twrooooooo!";
}

Finally, my hierarchy was setup as so:

Test.scene
One.cs
Standard Assets
-Two.js

alt text

This worked great! Perfectly!

However, my mockup was not complete, so I extended it, changing two.js to:

#pragma strict
public static function myFunc()
{
	return "Twrooooooo!" + Three.myFunc();
}

And adding a third file, Three.cs:

using UnityEngine;
using System.Collections;
public class Three : MonoBehaviour
{
	public static string myFunc ()
	{
		return " and Thwreeeeeeeeeee!";
	}
}

I then made the heirarchy look more like this:

Scene.scene
One.cs
Standard Assets
-Standard Assets
--Three.cs
-Two.js

alt text

And now, I am getting the error:

Assets/Standard Assets/Two.js(4,32): BCE0005: Unknown identifier: 'Three'.

So it appears that I cannot have multiple layers of standard assets folders for maximal control of build order!

This leaves me wondering, how CAN I control my build order to achieve a three stage building of my assets? Is this possible? I do not have Unity Pro.

That can’t work, sorry. You should convert the JS library to C#.

Just found this question and just want to add:

If the “innermost” C# library doesn’t have dependencies on stuff in the outermost library (which would create a circular dependency) you could compile the inner C# library yourself, either in MonoDevelop of in Visual Studio and place the dll along with the JS library files. That way both, the JS stuff and the precompiled C# library, are part of the first pass group and can by used by the UnityScript stuff.