こんにちは。ヤマヤタケシです。
まじかよ!
Updateと連動しているだけだと思っていたのに。
というか、勝手に思い込んでいた!
「[Unity] コルーチンがなぜか途中で停止するときの確認箇所 」に書いてあるとおりですが、ログを出して確認してみました。
Unity2017.2.1です。
いきなり、まとめます!
1. gameObject.SetActive(false)をするとコルーチンが止まる。
2. gameObject.SetActive(true)をしてもコルーチンは再開しない。
test:Start test:coroutine 1 test:update 1 test:update 2 test:coroutine 2 test:update 3 test:coroutine 3 test:update 4 test:coroutine 4 test:SetActive. child is Not Active test:SetActive. child is Active test:update 11 test:update 12 test:update 13
おまけにコードです。
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class CoroutineTest : MonoBehaviour
{
    void Start()
    {
        Debug.Log("test:Start");
         while (true)
        {
            Debug.LogFormat("test:coroutine {0}", Time.frameCount);
            yield return null;
        }
    }
    void Update()
    {
        Debug.LogFormat("test:update {0}", Time.frameCount);
    }
}
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class ActiveSwitch : MonoBehaviour
{
    public GameObject child;
    void Update()
    {
        if (Input.GetKeyDown(KeyCode.Space)
            || Time.frameCount == 5
            || Time.frameCount == 10)
        {
            child.SetActive(!child.activeSelf);
            Debug.LogFormat("test:SetActive. child is {0}", child.activeInHierarchy ? "Active" : "Not Active");
        }
    }
}
そんじゃまた。