void Awake()
 {
     _consumers = new CoroutineConsumer[(int)eUpdateType.Max];
     for (int i = 0; i < _consumers.Length; ++i)
     {
         _consumers[i] = new CoroutineConsumer(_coroutine_array_size);
     }
 }
    public override void OnInspectorGUI()
    {
        DrawDefaultInspector();

        var dispatcher = target as CoroutineDispatcher;

        _update_type = (CoroutineDispatcher.eUpdateType)EditorGUILayout.EnumPopup(_update_type);
        CoroutineConsumer consumer = null;

        if (!Application.isPlaying)
        {
            consumer = Co.editorConsumer;
        }
        else
        {
            consumer = dispatcher.consumers[(int)_update_type];
        }
        for (int i = 0; i < consumer.runNum; ++i)
        {
            var coroutine = consumer.coroutines[i];
            if (coroutine == null)
            {
                continue;
            }
            GameObject link_game_object = consumer.GetLinkGameObject(coroutine);
            if (link_game_object != null)
            {
                EditorGUILayout.BeginHorizontal();
                EditorGUILayout.LabelField(coroutine.ToString());
                EditorGUILayout.ObjectField(link_game_object, typeof(GameObject), true);
                EditorGUILayout.EndHorizontal();
            }
            else
            {
                EditorGUILayout.LabelField(coroutine.ToString());
            }
        }
    }