I have an enum for different enemy types and I want to apply a Material to an enemy based on an enum type. This is the approach I am using at the moment:
public enum EnemyType {
Normal,
Jumper
};
[SerializeField]
Material materialNormalEnemy;
[SerializeField]
Material materialJumperEnemy;
public void ApplyMaterialOnEnemy(GameObject enemy, EnemyType enemyType)
{
if (enemyType == EnemyType.Normal)
{
enemy.GetComponent<Renderer>().material = materialNormalEnemy;
}
else if (enemyType == EnemyType.Jumper)
{
enemy.GetComponent<Renderer>().material = materialJumperEnemy;
}
}
Is there a way to directly pass the Material into the enum as a parameter and then just retrieve those? Here is what I am thinking:
[SerializeField]
Material materialNormalEnemy;
[SerializeField]
Material materialJumperEnemy;
public enum EnemyType(Material material) {
Normal(materialNormalEnemy),
Jumper(materialJumperEnemy)
};
public void ApplyMaterialOnEnemy(GameObject enemy, EnemyType enemyType)
{
enemy.GetComponent<Renderer>().material = enemyType.material;
}
Is something similar possible in C#?