異なるコンポーネントをループで一度にON/OFFする
通常、コンポーネントのON/OFFは[取得したコンポーネント].enable = true/falseで行える。
配列にコンポーネントを保存すればループで一度にスイッチできる。
が、当然異なるコンポーネントには使用できない。
似たような処理を行うが、種類が異なるコンポーネントを一度にON/OFFしたいことがあるかもしれない。……あるよね?
たとえば「炎を発射する魔法のコンポーネント」「周囲を氷付けにする魔法のコンポーネント」みたいな感じで。
その際は一度各コンポーネントを取得し、MonoBehaivour型の配列に格納することでループでまとめてスイッチすることが可能。
uam = thisObj.AddComponent<UnitActionMove>(); uaa = thisObj.AddComponent<UnitActionAttack>(); uas = thisObj.AddComponent<UnitActionSkill>(); MonoBehaviour[] monoComponents; monoComponents = new MonoBehaviour[NUM_BUTTON]; monoComponents[0] = (MonoBehaviour)uam; monoComponents[1] = (MonoBehaviour)uaa; monoComponents[2] = (MonoBehaviour)uas; for(int ii = 0; ii < NUM_BUTTON; ii++) { monoComponents[ii].enabled = false; }
上の例だとUnitActionMove以下3種の異なるコンポーネントをmonoComponents配列への操作によって一度にON/OFFすることが可能になっている。