docs.unity3d.com
    目次を表示する/隠す

    予測デバッグとライブデバッグ

    Note

    バージョン 2019/2020 LTS を使用している場合は Unity Asset Store から Visual Scripting パッケージをダウンロードしてください。

    Visual Scripting は、再生モードに入る前に、スクリプト内でエラーを発生させる可能性のあるノードを予測して示すことができます。また、グラフを分析し、欠落したコンポーネントや Null 参照を予測します。ランタイムでエラーが発生すると、エラーのソースがグラフ内で強調表示されます。

    予測デバッグ

    適切に設定されていないノードや、エラーを発生させる可能性のあるノードは、黄色で表示されます。確実にエラーを発生させるノードはオレンジ色で表示されます。どちらの場合でも、ノードを調査し、通常の色に戻るまで必要な変更を加えてください。

    例: Log ノードは、コンソールに出力する必要のある Message (メッセージ) が欠如しているためにオレンジ色で表示されています。

    A + B の結果を Message に接続すると、Log ノードが通常の状態に戻ります。ただし、Add ノードは、最初のオペランド (A) が欠落しているためにオレンジ色になります。

    両方のオペランドに値が提供されれば、全てが通常の色に戻ります。

    B 入力ポートはデフォルトのインライン値を持つため、接続される必要がありません。

    Null 参照

    Null Reference Exception (Null 参照例外) は非常に一般的です。これは、値を必要とするパラメーターが、"何もない"、つまりスクリプト言語で言う "null" を受け取る場合に発生します。

    Unity > Preferences > Visual Scripting > Flow Graph にある Predict Potential Null References のオプションがオンになっている場合は、Visual Scripting が Null Reference (Null 参照) の予測を試みます。

    例: Destroy ノードはインライン値を持っていますが、それが "None" (Null) に設定されているために、オレンジ色で表示されています。

    Null のパラメーターを使用できるノードも稀にあります。残念ながら、これはコードベース解析によって把握することができないため、Visual Scripting ではそういったノードも誤判定によりオレンジ色で表示されます。この問題が繰り返し起こる場合は、Predict Potential Null References の設定をオフにしてください。

    コンポーネントの欠落

    コンポーネントを必要とし、指定のコンポーネントを持たないゲームオブジェクトあるいはコンポーネントを渡すノードが使用されている場合は、警告としてそのノードが黄色で表示されます。例えば以下の画像で、Add Force ノードの各値入力にはデフォルト値がありますが、Visual Scripting は、それを所有するゲームオブジェクトが Rigidbody を持っていないことを検出して警告を出します。

    このノードはオレンジ色にはなりません。なぜなら、ランタイムでゲームオブジェクトにコンポーネントを追加することは可能なので、呼び出す前に必要なコンポーネントを追加すれば、このノードが必ずクラッシュを発生させるとは限らないからです。このユースケースがプロジェクトで頻繁に発生する場合は、Unity > Preferences > Visual Scripting > Flow Graphs から Predict Potential Missing Components デバッグを無効化することも可能です。

    ライブデバッグ

    再生モードでは、現在アクティブなノードが青で強調表示されます。エラーが発生した場合、その原因となったノードが赤で強調表示されます。

    例: 以下は、欠陥のあるグラフの一例です。スペースキーを押すと、結果としてコンソールに "my third favorite fruit" と記録されます。

    Play が選択されてオブジェクトがクリックされると、次のようになります。

    クリックすると同時に全てのノードがアクティベートされて青で強調表示されます。しかし、コンソールでエラーが発生しています。

    欠陥のあるノードが赤で表示されます。

    よくある間違いは、実際は配列インデックスは 0 から開始するにも関わらず、1 から開始すると想定してしまうことです。 スクリプトではインデックスは常に0 から始まります。最初の項目はインデックス 0、2 番目はインデックス 1、3 番目は 2、と続きます。3 番目の項目を取得するには、フィールドに 2 と入力する必要があります。

    トップに戻る
    Copyright © 2023 Unity Technologies — 商標と利用規約
    • 法律関連
    • プライバシーポリシー
    • クッキー
    • 私の個人情報を販売または共有しない
    • Your Privacy Choices (Cookie Settings)