【Unity】コルーチン入門

コルーチンとは? Unityでゲームを作っていると、「3秒待ってから次の処理を実行したい」「フェードアウトを少しずつ進めたい」といった、時間に関わる処理を書きたくなる場面が出てきます。 こうした処理をUpdateだけで書こうとすると、経過時間を測るための変数を用意し、毎フレーム加算して、しきい値を超えたかどうかを判定して……と、コードがあっという間に膨らんでいきます。 using UnityEngine; public class WaitWithUpdate : MonoBehaviour { private float _elapsedTime; private bool _isWaiting = true; private void Update() { if (_isWaiting) { // 経過時間を加算する _elapsedTime += Time.deltaTime; // 3秒経過したかチェックする if (_elapsedTime >= 3f) { Debug.Log("3秒経過しました"); _isWaiting = false; } } } } たった「3秒待ちたい」だけなのに、状態を管理するフラグや経過時間の変数が必要になってしまいます。 こんなときに便利なのがコルーチン(Coroutine)です。 コルーチンを使うと、処理の途中で一時停止して、後で再開するような書き方ができます。 Updateに状態管理を持ち込まずに、自然な流れで「待つ」処理を書けるのが利点です。 Unity Docs Unity - Manual: Write and run coroutines docs.unity3d.com 先ほどの3秒待つ処理を、コルーチンで書き直してみると以下のようになります。 using System.Collections; using UnityEngine; public class WaitWithCoroutine : MonoBehaviour { private void Start() { // コルーチンを開始する StartCoroutine(WaitAndLog()); } private IEnumerator WaitAndLog() { // 3秒待つ yield return new WaitForSeconds(3f); Debug.Log("3秒経過しました"); } } フラグも経過時間の変数もなくなり、コードを上から下へ追うだけで処理の流れが読み取れます。
  • Unity
  • C#

【Unity】よくあるコンパイルエラー(CSxxxx)の原因と直し方

Unityでスクリプトを書いていると、ConsoleにCS0246やCS0103といった番号付きのエラーが表示されます。 このCSから始まる番号は、C#コンパイラがエラーの種類を区別するためのコードです。 慣れないと原因を理解するのが大変かもしれませんが、 長い英語メッセージを最初からすべて読むより、まず番号を見ると確認箇所を絞れます。 この記事では、Unity開発で遭遇しやすいコンパイルエラーを、エラーになるコードと修正後のコードを並べて説明します。 探している番号やメッセージをページ内検索すれば、該当する項目へ直接移動できます。 Consoleウィンドウの開き方、絞り込み、ファイルと行番号の確認方法は別の記事で解説しています。 記事末尾の関連ページから参照してください。 🔗 関連記事 Consoleウィンドウの開き方や、エラーだけに絞り込んで行番号を確認する手順はこちらで解説しています。 【Unity】Consoleのログが流れて読めないときの設定|重複まとめ・エラーで一時停止・タイムスタンプ Consoleウィンドウのログを追いやすくする設定を解説。Collapseによる重複まとめ、Error Pauseでのエラー時停止、タイムスタンプの表示や行数変更まで、デバッグを効率化する使い方を紹介します。 GARNET LOG あとで読む よくあるコンパイルエラー早見表 エラー 主な原因 CS0246 型、名前空間、パッケージが見つからない CS0103 変数名やメソッド名が現在のスコープに存在しない CS1061 対象の型に指定したメンバーがない CS0029 代入元と代入先の型が一致していない CS0117 型に指定した静的メンバーがない CS0120 インスタンスが必要なメンバーを型から呼んでいる CS0019 指定した型の組み合わせでは演算子を使用できない CS0234 名前空間内に指定した型や名前空間がない CS1002 セミコロンが不足している CS1513 閉じ波括弧が不足している 表の「主な原因」は、最初に調べる場所を示したものです。同じ番号でも、メッセージ内の型名やメンバー名はコードによって変わります。 まずエラー番号とメッセージ内の型名・メンバー名を、手元の表示と照合してください。一致したら、失敗例とコードを比べ、原因に合う確認項目を順に追います。
  • Unity
  • C#
  • エラー