Когда проходят первые сложности привыкания к Unity, стиль программирования может меняться, отходя от стандартных Монобехов.
К примеру, я часто использую классы, не наследованные от MonoBehaviour. Самое неудобное, что в данном случае пропадает возможность использовать мои любимые коратины..
Или нет?
Вот небольшое комбо, возвращающая нам эту возможность :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | //Created by Neodrop //neodrop@unity3d.ru using System.Collections; using UnityEngine; public class CoroutineExternal : MonoBehaviour { public delegate void MethodDelegate(); public MethodDelegate del; public float timeToCoroutine; public static void Create( float timeToCoroutine, MethodDelegate del ) { CoroutineExternal ce = new GameObject("External Coroutine Unit", typeof(CoroutineExternal)).GetComponent<CoroutineExternal>(); ce.del = del; ce.timeToCoroutine = timeToCoroutine; } IEnumerator Start () { yield return new WaitForSeconds(timeToCoroutine); del(); Destroy(gameObject); } } |
При вызове статического конструктора Create, создаётся временный GameObject с прицепленным к нему скриптом, который, по истечении времени коратины, вызовет, переданного ему, делегата и уничтожит сам себя.
Просто определите свой тип делегата и подправьте метод Create под свои нужды.
3 комментария на «.NET Джиу-джитсу : Использование Coroutine из не Monobeh классов»
Ваш отзыв
Вы должны войти, чтобы оставлять комментарии.
23 Дек 2013 в 18:08
bonjour@imperialists.unsightly” rel=”nofollow”>.…
благодарствую!…
23 Авг 2014 в 18:04
chaw@confronting.transcript” rel=”nofollow”>.…
спс!…
26 Авг 2014 в 8:50
unconstitutional@emeralds.schlieren” rel=”nofollow”>.…
спс за инфу….