I’m currently designing power up-type items. When they are picked up, they disappear and the power up affects the player.
Every item has its own sprite and script.
What I want to do is that when an item spawns, a random sprite + script gets picked and added to the item. But every sprite should be kind of linked to its script, of course.
What I thought of was putting both the sprite names and the scripts in arrays, at the same positions.
string[] spriteNames = new string[2] {"ItemSpeedUpSprite", "ItemFireFasterSprite"};
PowerUp[] itemTypes = new PowerUp[2] {SpeedUp, FireFaster};
void Start () {
int rand = Random.Range (0, 1);
GetComponent<SpriteRenderer> ().sprite =
Resources.Load (spriteNames[rand], typeof(Sprite)) as Sprite;
gameObject.AddComponent<itemTypes[rand]>();
}
In this case for example, I would get for the random value “1” the sprite “ItemFireFasterSprite” and the script “FireFaster”. “PowerUp” is the inherited super class of all item scripts.
I get however a compiler error for the PowerUp array. Something like
“SpeedUp is a type, but it is being used like a variable.”
I apparently cannot just use the script’s class as an array item, it seems. How can I access the scripts and put them in an array then? Or is there another way to access the scripts, e.g. by getting them by name or something?