public static class CoroutineExtensions
{
public static IEnumerator WaitAll(this MonoBehaviour mono, params IEnumerator[] ienumerators)
{
return ienumerators.Select(mono.StartCoroutine).ToArray().GetEnumerator();
}
}
IEnumerator Hide()
{
yield return this.WaitAll(Rotate(Quaternion.identity), Scale(Vector3.zero));
gameObject.SetActive(false);
}
//----------------------------------------
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using System.Linq;
public class TestDestroy : MonoBehaviour
{
// Start is called before the first frame update
IEnumerator Start()
{
yield return this.WaitAll(NewAndDestroyObject(), NewAndMoveObject());
}
IEnumerator NewAndDestroyObject()
{
var _g = GameObject.CreatePrimitive(PrimitiveType.Cube);
_g.name = "NewAndDestroy";
yield return new WaitForSeconds(5);
Destroy(_g, 2);
}
IEnumerator NewAndMoveObject()
{
var _g = GameObject.CreatePrimitive(PrimitiveType.Capsule);
_g.name = "NewAndMove";
yield return new WaitForSeconds(8);
_g.transform.position += Vector3.one * 100;
// Destroy(_g, 10);
}
}
public static class CoroutineExtension
{
public static IEnumerator WaitAll(this MonoBehaviour mono, params IEnumerator[] _enums)
{
var _m = _enums.Select(mono.StartCoroutine);
return _m.ToArray().GetEnumerator();
}
}