yield return YieldInstructionが1フレーム遅延するので(前記事)、yield return IEnumeratorはフレーム遅延するのか気になりました。結果は遅延なし。以下確認コードと結果。Unity2017.2 0p4 Windows版のEditorによるテストです。
CalledEnumeratorTest.cs
using System.Collections;
using UnityEngine;
public class CalledEnumeratorTest : MonoBehaviour
{
IEnumerator Start()
{
Log("Start");
yield return BeCalled();
}
IEnumerator BeCalled()
{
Log("BeCalled");
yield return null;
Log("BeCalledAfterOneFrame");
}
void Log(string message)
{
Debug.Log(Time.time.ToString("n5") + " :" + message);
}
}
結果
0.00000 :Start
0.00000 :BeCalled
0.02000 :BeCalledAfterOneFrame
メンテナンスや可読性のために肥大化したIEnumeratorは分割しても大丈夫そうです。