- Home /
How to enable/disable Javascript using a C# script?
Hi,
I am trying to enable a script (Texture_Tile_Animation,.js) which starts disabled using a C# script. I have tried;
Options_screen.GetComponent<Texture_Tile_Animation>().enabled = true; // Not working
and
Options_screen.GetComponent("Texture_Tile_Animation").enabled = true; // Gives error as does not recognise 'enabled'.
Any ideas?
The script is as follows;
#pragma strict
var uvAnimationTileX : int = 4;
var uvAnimationTileY : int = 4;
var framesPerSecond : float = 10.0;
//var timeToLiveInSeconds : float = 1.0f;
private var index : int;
private var size : Vector2;
private var offset : Vector2;
private var uIndex : float;
private var vIndex : float;
function Start()
{
DoTiling();
}
function DoTiling()
{
//gameObject.renderer.enabled = true;
while(true)
{
// Calculate index
index = Time.time * framesPerSecond;
// repeat when exhausting all frames
index = index % (uvAnimationTileX * uvAnimationTileY);
// Size of every tile
size = Vector2 (1.0 / uvAnimationTileX, 1.0 / uvAnimationTileY);
// split into horizontal and vertical index
uIndex = index % uvAnimationTileX;
vIndex = index / uvAnimationTileX;
// build offset
// v coordinate is the bottom of the image in opengl so we need to invert.
offset = Vector2 (uIndex * size.x, 1.0 - size.y - vIndex * size.y);
renderer.material.SetTextureOffset ("_MainTex", offset);
renderer.material.SetTextureScale ("_MainTex", size);
yield WaitForEndOfFrame();
}
// yield WaitForSeconds(timeToLiveInSeconds);
// HideShockwave();
}
/*
function HideShockwave()
{
gameObject.renderer.enabled = false;
//Destroy(gameObject, timeToLiveInSeconds);
}
*/
Thanks
Answer by whydoidoit · Aug 20, 2012 at 04:14 PM
Interacting between JavaScript and C# is difficult because the two languages are built into different DLLs by Unity - you can normally get it to work one way by having one of the scripts live in Plugins or Standard Assets - then the other script can see it.
You might be better off using a SendMessage("EnableYourself", false) which will work between the languages ok. All you do then is write an EnableYourself function on the javascript class and have it set enabled equal to the parameter. Generally speaking it is not a good idea to mix languages in a project.
I've just tried placing the Java file in Standard Assets and Plugins, and there seems to be no difference.
So for the alternative method you mention, you're saying add something like the following at the bottom of the Java class?
var flag : bool;
function EnableYourself(bool flag) { Texture_Tile_Animation.enabled = flag; }
Thanks
Hi,
Any chance you might be able to help me out with how to add the EnableYourself function as I mostly work in C# ? :s