
Итак, в рамках я создаю действия, в настоящее время у них есть список условий или соображений (одно и то же, другое имя).
Хотя каждое условие разделяет некоторые из те же функции, такие как:
- Возврат плавающей оценки
- Использование формулы оценки
Взгляните на следующий код:
Код: Выделить всё
[CreateAssetMenu(fileName = "Consider my health vs max health",
menuName = "AnAppGames/AI/Example/Decisions/Health Consideration")]
public class MyHealth : BaseConsideration
{
private float health;
public float maxHealth;
public override float Consider(BaseAiContext context, BaseAction action, T value)
{
health = value as float;
return EvaluateValues(health / maxHealth);
}
}
Теперь, продолжая свою разработку, мне пришлось принять следующее соображение:
Код: Выделить всё
public class DistanceFromMe : BaseConsideration
{
public float minRange;
public float maxRange;
private float ConsiderWithValues(Transform target, Transform caller)
{
return EvaluateValues(new FloatData(Vector3.Distance(target.transform.position, caller.position),
minRange,
maxRange).GetNormalizedData());
}
public override float Consider(BaseAiContext context, BaseAction action, T value)
{
Transform target = value as Transform;
if (target == null)
{
return 0;
}
return ConsiderWithValues(target.transform, context.transform);
}
public override float Consider(float x)
{
return EvaluateValues(new FloatData(x,
minRange,
maxRange).GetNormalizedData());
}
}
Итак, мне нужно каким-то образом добавить различные типы параметров в «Рассмотрение», однако эти параметры будут сильно различаться.
Еще одна проблема, с которой я сталкиваюсь, заключается в том, что когда я просматриваю список, я не смогу сказать, какие параметры мне нужны и как удовлетворить потребности Рассмотрения.
Я думал о разных способах справиться с этим внутри редактора, но ничего не нашел. Что мне следует рассмотреть дальше?
Стоит отметить, что на данный момент каждый из них является ScriptableObjects; Я не уверен на 100%, что так и должно быть, но просто не знаю, как справиться с этой проблемой.
Подробнее здесь: https://stackoverflow.com/questions/662 ... chitecture
Мобильная версия