универсальное действие с произвольным параметром COUNT - PullRequest
0 голосов
/ 11 октября 2019

Я создал класс, который обрабатывает интерактивные объекты, моему действию не нужны аргументы, но, если кто-то хочет использовать его с параметром, таким как Персонаж, который активировал это взаимодействие (в случае локальной многопользовательской игры), мне нужно создать другой класс сДействие ?

Упрощенный класс:

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 []? Нужно ли копировать и вставлять весь класс, чтобы изменить только эту вещь?

...