Добре, така че се натъквам на лек проблем, по същество имам Coroutine, която съдържа for-цикъл. Мога успешно да извикам методите StopCoroutine и StartCoroutine, но разбира се, това просто поставя на пауза и връща на пауза Coroutine. Има ли начин наистина да го спрете и рестартирате? Крайната ми цел тук е да мога да стартирам Coroutine, да я затворя по преценка на потребителя и да я рестартирам отначало по всяко време, също по преценка на потребителя. Това постижимо ли е? Благодаря.
Unity 5.0.1 Пълно спиране на Coroutine
Отговори (1)
За да „пренавиете“ съпрограмата, просто извикайте отново метода на съпрограмата със същите параметри. Ако искате да запазите тези параметри, можете да използвате затваряния:
public class CoroutineClosureExample : MonoBehaviour
{
private System.Func<IEnumerator> CreateCoroutineFactory(int someInt, float someFloat)
{
return () => CoroutineYouWant(someInt, someFloat);
}
private IEnumerator CoroutineYouWant(int someInt, float someFloat)
{
for(int i = 0; i < someInt; i++)
{
yield return new WaitForEndOfFrame();
}
}
private System.Func<IEnumerator> m_CurrentCoroutineFactory;
private IEnumerator m_CurrentCoroutine;
public void SetCoroutineParameters(int someInt, float someFloat)
{
m_CurrentCoroutineFactory = CreateCoroutineFactory(someInt, someFloat);
}
public void RestartCurrentCoroutine()
{
if (m_CurrentCoroutine != null)
{
StopCoroutine(m_CurrentCoroutine);
m_CurrentCoroutine = null;
}
if (m_CurrentCoroutineFactory != null)
{
m_CurrentCoroutine = m_CurrentCoroutineFactory();
StartCoroutine(m_CurrentCoroutine);
}
}
}
person
Max Yankov
schedule
26.04.2015
Благодаря! В крайна сметка стигнах до подобно заключение.
- person zfollette; 26.04.2015