Я все еще не уверен на 100%, понял ли я вопрос, но попробую.
Как я понимаю, вы хотите, чтобы на каждом триггерном объекте был компонент, в котором вы можете задать другой градиентнастройки для каждого.
И я предполагаю, что под Unity interface
вы подразумеваете Инспектора.
Так что-то вроде, например,
public class GradientSetter : MonoBehaviour
{
public GradientColorKey[] colorKeys;
public GradientAlphaKey[] alphaKeys;
}
Поместите это в триггерный объект (ы)и настройте параметры с помощью инспектора.Вначале они должны быть пустыми массивами, поэтому для добавления элементов просто введите количество требуемых элементов в свойстве size
обоих массивов.
И где бы вы ни реализовали Collision для объекта TrailRenderer
void OnTriggerEnter(Collider other)
{
var gradientSetter = other.GetComponent<GradientSetter>();
if(!gradientSetter) return;
gradient.SetKeys(gradientSetter.colorKeys, gradientSetter.alphaKeys);
...
}
Я предполагаю, GradientColorKey
и GradientAlphaKey
равны Serializable
.Если вы реализуете это, но они не отображаются в Инспекторе, дайте мне знать, тогда вам придется создать для них класс-оболочку.(Я не могу проверить это прямо сейчас)
Примечание: напечатано на смартфоне, поэтому нет гарантии, но я надеюсь, что идея проясняется