FRI第11回:デバッグと設定ファイルツイートツイート今回は、コンテンツ開発の過程では欠かせないデバッグと、設定ファイルの記述法について紹介します。Komura(CGWORLD)こんにちは、高田です。今回は主にデバッグやコンテンツの設定の話をします。プログラムの制作過程においては、期待通りに動かない場合が必ず出てきます。プログラムのミス、インスペクタでの値の設定ミス、勘違いなどなどその理由は様々ですが、それをできるだけ早く見つけ、修正することが重要です。今回は、下記の4つのトピックに分けて解説していきます。1.printfデバッグ:Debug.Log()2.デバッガーを使うデバッグ3.Debugを使った視覚的なデバッグ:Debug.DrawRay()4.外部設定ファイル<1>printfデバッグ:Debug.Log()デバッグの目的で最も多いのは、あるタイミングで変数がどんな値になっているかを確認したい場合だと思います。簡単なのはDebug.Log()を使う方法で、スクリプト内の値を確認したい場所に以下のように書きます。//messageは出力したい文字列この方法は古くから使われていて、「printfデバッグ」とも呼ばれます。名前の由来はC言語で値を表示するときに次のように書くことからです。どんなときにも使える万能な方法です。message);以下のようにスクリプトに書くと、Updateが呼び出されるたびにそのときのフレーム番号がEditorのConsoleに表示されます。}このスクリプトを、以下のようにオプション指定なしでビルドして実行してみます。Unityは、実行するとDebug.Log()などの出力をテキストファイルにログとして書き出してくれます。適当に実行を止めて確認してみましょう。デフォルトでは、Unityのログは下記のディレクトリに出力されます。Name]AppDataフォルダはデフォルトではエクスプローラに表示されないため、エクスプローラの[表示オプション→隠しファイル]のチェックを入れてください。同時に[ファイル名拡張子]のチェックも入れておくことをオススメします。Settingsで指定したパラメータです。2019では、「Player.log」という名前でログが保存されます。一世代前のログは「Player-prev.log」として残ります。2018の場合は「output_log.txt」という名前で保存されます。Player.logの内容は、次のようになっていると思います。"3"と表示されている部分が先ほど書いたUpdate()のUnity.Log()で表示された部分です。Build」を指定して実行してみます。Prev.logの内容は以下のように変化します。ビルドオプションなしのログと比べてみると、"1"を表示したDebug.log()が書かれているファイル名と行番号も表示してくれるようになっています。DebugSample.csの13行目で"1"を表示したことがわかります。次に、意図的にエラーを起こしてみます。Consoleにエラーメッセージが表示されるようになります。Buildを指定しておくと良いでしょう。必要な部分にDebug.Log()を書くだけでかなりの情報を収集することができるのですが、この方法ではDebug.Log()を追加するごとにビルドをし直す必要があります。ここでデバッガーを使うと、もう少し手軽に値を確認することができます。Studioの強力なデバッグ機能を利用できるようになっています。Studioの「Unityにアタッチ」を押すとUnityエディタに接続され、デバッガーが利用可能になります。スクリプトの行番号の左側をクリックすると赤い丸が表示されます。これは「ブレークポイント」と呼ばれ、スクリプトの実行を止める目印になります。UnityでPlayするとブレークポイントで実行が止まります。ステップオーバー(F10)を押すと、1行ずつスクリプトが実行され、それぞれの変数の内容を確認することができます。デバッガーはビルドしたプログラムに対しても有効です。ビルドしたプログラムの動作確認を行うときにUnityエディタで実行すると不具合が再現できない、しにくい場合があります。そのようなときは、UnityエディタのConsoleの出力にビルドしたプログラムのログを表示させることができます。ここで、例としてボタンを押すとDebug.Log()に"CLICK"と表示されるプログラムを用意しました。Editor上ではCLICKと表示されますが、ビルドすると動いているか判断できません。ConsoleのEditorから表示するプログラムの対象を変更することができます。Debugging]にもチェックを入れると、デバッガーでブレークポイントを設定することができるようになります。実行してデバッガーを接続してみましょう。Debuggerにアタッチします。[WindowsPlayer]と表示されている方を選んでOKを押します。これでUnityPlayerと接続します。ブレークポイントを設定すると、そこできちんと止まってくれます。今回は、コンテンツ開発におけるUnityとTouchDesigner、それぞれの特徴と必要な知識について考えます。/...2019.09.27第11回:デバッグと設定ファイル今回は、コンテンツ開発の過程では欠かせないデバッグと、設定ファイルの記述法について紹介します。Toshinori...2019.08.20第10回:Spoutを使ってリアルタイムに画像を共有する今回は、UnityとTouchDesignerの間でリアルタイムに画像を共有する方法を紹介します。Controlでライトを制御する今回は、通信プロトコルOSCを、Unityで使えるようにセットアップします。Takata(C...2019.05.21第8回:押しボタンの入力をUnityで取得する今回は、押しボタンの入力をUnityで取得できるように、ボタンとデジタル入出力装置とPCを接続し、設定をしていきます。TEXT_高田稔則...2019.04.18第7回:プロジェクタのキャリブレーションをする第5回から引き続き、測域センサを用いたコンテンツの制作を進めていきます。今回はプロジェクタによる投影位置をより使いやすいよう調整します。...2019.02.21第6回(番外編):裸眼立体視ホログラムディスプレイを使ってみる前回から測域センサを用いたコンテンツの紹介がスタートしましたが、今回は番外編として、今注目の裸眼立体視用ホログラムディスプレイ「Looki...2019.01.24第5回:測域センサを使ってみる今回からは、レーザー式測域センサを利用したコンテンツを考えていきます。Unityで使えるようセットアップをし、簡単なインタラクティ...2018.12.19第4回:顔検出まとめ前回は、複数人の顔を検出してお面をかぶせるところまでコードをアレンジしてみました。今回は、さらにその精度を高めつつ、他の顔検出アルゴリズム...2018.10.26第3回:複数人の顔検出に対応させる前回、顔を検出してお面をかぶせるところまでつくってみました。今回はさらにそれを発展させ、複数人の顔を検出できるようにします。TEXT_高...2018.09.21第2回:OpenCVで顔検出こんにちは、Codelight株式会社の高田です。真さんの「おいしいデ」を読みました。ハリウッドでも活躍する佐藤隆之氏がFRONTIERのクリエイター向けPCをレビュー。ハリウッドでも活躍する佐藤隆之氏がFRONTIERのクリエイター向けPCをレビュー。次の100年も愛されるフォントを創る。FIX!森田悠揮氏、マーザ・アニメーションプラネット、カヤック、萌、SNKの登壇が決定。