Hello, this is my first post in the forum, so sorry if i’ll make some mistakes. Forgive my poor english too, I’m Italian.
I’m using UnityScript, and I have some scripts that use a variable for getting info or setting var from/to another script.
Here is an example:
var script : GameObject;
var scriptName : String;
function OnCollisionEnter (collision : Collision) {
script.GetComponent(scriptName).OnCollisionEnter(collision); // Error is here.
//the rest of the code...
}
I’ve switched to Android and got 999+ error, because Android can’t use Dynamic Typing (i guess), but even if all this errors was fixed in many ways, this error is over my capabilities. The construct “GetComponent(String)” give a type Component, and I have to cast it to type scriptName.
I use this approach for other scripts too, for example for setting Damage to many scripts of enemies.
I tried many ways, here are some of them:
//EnemyInfo is a general script that all enemies have.
//This return MonoScript...
var type : System.Type = enemy.GetComponent(EnemyInfo).enemyScriptType.GetType(); //enemyScriptType is of type MonoScript.
//This return ScriptName, the right value
var type : System.Type = enemy.GetComponent(EnemyInfo).enemyScriptType.GetClass(); //enemyScriptType is of type MonoScript.
enemy.GetComponent(type).Life -= damage; //Life is not a member of Component
enemy.GetComponent(type as type).Life -= damage; //The name 'type' does not denote a valid type ('not found')
enemy.GetComponent.<type>().Life -= damage; //The name 'type' does not denote a valid type ('not found')
var type : String = enemy.GetComponent(EnemyInfo).enemyScriptName; //trying with strings
enemy.GetComponent(type).Life -= damage; //Life is not a member of Component
enemy.GetComponent(Type.GetType(type)).Life -= damage; // Unknown identifier: 'Type'
enemy.GetComponent(System.Type.GetType(type)).Life -= damage; // Life is not a member of Component
I have to store a type into a variable and then use it for declaring the type of the new variable, something like this:
var type : Systm.Type = ScriptName;
var enemyScript : type = enemy.GetComponent(type);
But I can’t get them to work… How can i solve this problem?
Thanks in advance ;).