Я делаю карточную игру, в которой назначаю случайные эффекты картам, поэтому мне нужно загрузить код эффекта во время выполнения только с именем класса.
Я не знаю, есть ли мой абстрактный класс и child выполнены правильно, и я также точно не знаю, как получить нужный класс из пути. Я знаю, что Resouces.Load не сработает, но я оставлю его здесь, чтобы легче было передать то, что я хочу сделать.
public class GameManager : MonoBehaviour
{
public Effect effect;
...
effect = Resources.Load<Effect>("Card/Effects/" + c.cardActual.effect1);
if (effect.Execution())
{
StartCoroutine(TargetAndCastSpell(c,p));
}
Это код для моего абстрактного класса
public abstract class Effect : MonoBehaviour
{
public string targetType;
public List<int> availableTargets;
public int effectTier;
public PlayerHolder playerTarget;
public CardPhysicalInstance minionTarget;
public PlayerHolder caster;
public void EffectX(PlayerHolder PlayerTarget, CardPhysicalInstance MinionTarget)
{
}
public bool Execution()
{
return false;
}
}
И, наконец, ребенок, которого я хочу загрузить во время выполнения
class Spark : Effect
{
string targetType = "any";
//Deal 1 damage to any target
public bool Execution ()
{
bool canTarget = false;
caster = GameManager.singleton.currentPlayer;
availableTargets = SpellHelper.AvailableTargets();
if (targetType == "any") //Placeholder check
{
canTarget = true;
caster.playerState = GameManager.PlayerState.targeting;
}
return canTarget;
}
...
Любая помощь приветствуется, спасибо и извините за мое явное непонимание абстрактных классов.