Re: Как реализовать сложную очередность методов [РЕШЕНО]
Добавлено: 10 фев 2020, 21:03
Susanin писал(а):Можно юзать паттерн Command
спасибо, но , увы, с ООП я на "ваше высочество" ну или мне придётся переписать весь проект)
1max1 писал(а):На всякий случай, вот пример кода с объектом в качестве параметра:Синтаксис:Используется csharpclass XXX : MonoBehaviour
{
UnityAction unityAction;
void Start()
{
unityAction = mth(gameObject);
unityAction();
}
UnityAction mth(GameObject go)
{
return () =>
{
// тут делаешь со своим
// объектом что хочешь
print(go.name);
go.name = "asd";
// бла бла бла...
};
}
}
Поэтому с корректировал так и всё получилось как надо ))
Синтаксис:
Используется csharp
public List<(UnityAction<GameObject> action, int prior)> ListQueueMethods = new List<(UnityAction<GameObject>, int)>();
public UnityAction<GameObject> callDefence = (GameObject go) => { }; // для массива функций
public UnityAction<GameObject>[] CallDefences; // массив функций
// а вызов оформил так
callDefence = aidef.CallDefences[0];
callDefence(gameObject);
AddMethod(aidef.callDefence, 1);
// ваш вариант метода с сортировкой
public void AddMethod(UnityAction<GameObject> action, int priority) {
methods.Add((action, priority));
methods.Sort((l, r) => l.priority.CompareTo(r.priority));
}
public UnityAction<GameObject> callDefence = (GameObject go) => { }; // для массива функций
public UnityAction<GameObject>[] CallDefences; // массив функций
// а вызов оформил так
callDefence = aidef.CallDefences[0];
callDefence(gameObject);
AddMethod(aidef.callDefence, 1);
// ваш вариант метода с сортировкой
public void AddMethod(UnityAction<GameObject> action, int priority) {
methods.Add((action, priority));
methods.Sort((l, r) => l.priority.CompareTo(r.priority));
}