Я создал класс, который обрабатывает интерактивные объекты, моему действию не нужны аргументы, но, если кто-то хочет использовать его с параметром, таким как Персонаж, который активировал это взаимодействие (в случае локальной многопользовательской игры), мне нужно создать другой класс сДействие ?
Упрощенный класс:
public static class Interactable {
public static List<Entity> interactables = new List<Entity>();
public class Entity {
public Action action;
}
public static Entity GetClosestInteractable() { [foreach in interactables...] }
}
class Player() {
Update() {
var entity = Interactable.GetClosestInteractable();
if(buttonPressed) entity?.action();
}
}
что я хочу сделать:
public static class Interactable<T> where T : Action {
public static List<Entity> interactables = new List<Entity>();
public class Entity {
public T action;
}
public static Entity GetClosestInteractable() { [foreach in interactables...] }
}
class Character() {
Update() {
var entity = Interactable<Character>.GetClosestInteractable();
if(buttonPressed) entity?.action(this);
}
}
Но, очевидно, ограничение недействительно. Может ли действие <> использовать параметры T []? Нужно ли копировать и вставлять весь класс, чтобы изменить только эту вещь?