出題範囲(4分野)
- Debugging / problem-solving / APIの解釈119問
- Creating code119問
- Evaluating code124問
- Navigating the interface123問
Unity認定 ユーザー:プログラマーの例題(6問・解説つき)
スキルサートのAIが出題範囲に沿って作成した演習問題です(過去問ではありません)。アプリでは毎週新しい問題が追加されます。
例題1Debugging / problem-solving / APIの解釈
スクリプト内で transform.Translate(0, 0, 5 * Time.deltaTime); というコードを実行した場合、Unityのエディタ上でどのような動作が期待されますか。
- ローカル座標系のX軸方向に、フレームごとに5ユニット移動する
- オブジェクトがカメラの方向を向きながら、5ユニット分前進する
- ローカル座標系のZ軸方向に、1秒間で5ユニット移動する
- 移動は行われず、オブジェクトのスケールがZ軸方向に5倍になる
- グローバル座標系のZ軸方向に、1秒間で5ユニット移動する
解答と解説を見る
正解: ローカル座標系のZ軸方向に、1秒間で5ユニット移動する
正解は『ローカル座標系のZ軸方向に、1秒間で5ユニット移動する』です。transform.Translateメソッドは、第2引数に座標系を指定しない場合、デフォルトでローカル座標系に基づいてオブジェクトを移動させます。引数に渡された移動量にTime.deltaTimeを乗算することで、フレームレートの変動に影響されず、1秒あたりの移動距離(速度)を定義できます。このコードではZ軸(第3引数)に5を指定しているため、1秒間に5ユニットの速度でローカルの前方方向に移動します。
例題2Creating code
UnityのC#スクリプトにおいて、整数(1, 10, -5など)を保持するために使用されるデータ型として正しいものはどれですか?
- int
- bool
- string
- float
- Vector3
解答と解説を見る
正解: int
正解は「int」です。C#において、整数値を扱うための標準的なデータ型はint(integerの略)です。他の選択肢について、floatは小数点を含む数値(浮動小数点数)、stringはテキストなどの文字列、boolは真(true)または偽(false)の二値、Vector3は3D空間の座標や方向を表すために使用されます。Unityでのプログラミングにおいて、カウンタや個数など、小数点が必要ない数値にはint型が最も適しています。
例題3Evaluating code
次のC#スクリプトを実行した際、コンソールに整数「3」が出力されるようにしたい。コード内の(A)に入る記述として最も適切なものはどれか。
int count = 0;
int[] numbers = { 1, 3, 5, 7, 9 };
foreach (int n in numbers) {
if (n > 4) {
(A)
}
}
Debug.Log(count);
- count = n;
- continue;
- count = count + n;
- break;
- count++;
解答と解説を見る
正解: count++;
正解は「count++;」です。与えられた配列「numbers」には {1, 3, 5, 7, 9} が格納されており、foreach文で順番に要素を評価しています。if文の条件「n > 4」を満たす要素は、配列内の 5, 7, 9 の合計3つです。最終的にDebug.Logで「3」という数値を出力するためには、条件に一致した回数分だけ変数countをインクリメント(1ずつ加算)する必要があります。count++は「count = count + 1」の略記法であり、このロジックを評価する上で最も適切です。
例題4Navigating the interface
Sceneビューでのナビゲーションにおいて、特定のオブジェクトを中心にカメラを回転(オービット)させるためのマウス操作として正しいものはどれか?
- マウスの右ドラッグ
- Alt (Option)キーを押しながら左ドラッグ
- マウスのホイールボタンをクリックしながらドラッグ
- Shiftキーを押しながらマウスホイールを回転
- Ctrl (Command)キーを押しながら左ドラッグ
解答と解説を見る
正解: Alt (Option)キーを押しながら左ドラッグ
正解は「Alt (Option)キーを押しながら左ドラッグ」です。UnityのSceneビューにおけるナビゲーション操作では、Altキー(Macの場合はOptionキー)を押しながらマウスの左ボタンでドラッグを行うと、現在選択されているオブジェクトやフォーカスされている地点を中心に視点を回転させることができます。その他の操作として、マウスの右ドラッグは自由な視点回転、マウスホイールのクリックによるドラッグは視点の平行移動(パン)を行うための標準的な操作です。これらをスムーズに使い分けることが、3D空間での効率的な作業に繋がります。
例題5Debugging / problem-solving / APIの解釈
Unityでのプログラミングにおいて、NullReferenceException(ヌル参照例外)が発生する原因として「誤っている」ものはどれですか。
- Destroyメソッドによって既にメモリから破棄されたオブジェクトのメンバにアクセスした
- GameObject.Findでシーン内に存在しない名前のオブジェクトを探し、その変数にアクセスした
- GetComponentメソッドで、アタッチされていないコンポーネントを取得しようとした
- C#スクリプトのクラス名と、プロジェクトウィンドウ内のファイル名が一致していない
- Inspectorでpublic変数に対してオブジェクトの参照を割り当て忘れた
解答と解説を見る
正解: C#スクリプトのクラス名と、プロジェクトウィンドウ内のファイル名が一致していない
正解は『C#スクリプトのクラス名と、プロジェクトウィンドウ内のファイル名が一致していない』です。Unityではクラス名とファイル名が一致していない場合、GameObjectにコンポーネントとしてアタッチすることができず、コンソールに警告やエラーが表示されますが、これが直接の実行時のNullReferenceExceptionの原因になるわけではありません。他の選択肢はすべて、実体のない(nullである)オブジェクトや参照先にアクセスしようとする行為であり、典型的なNullReferenceExceptionの発生原因です。
例題6Creating code
UnityのMonoBehaviourを継承したクラスにおいて、標準的なイベント関数の説明として誤っているものはどれですか?
- OnDestroyは、オブジェクトが破棄される直前に呼び出される。
- FixedUpdateは、物理演算の計算サイクルに合わせて呼び出される。
- Updateは、実行環境のパフォーマンスに関わらず常に一定の時間間隔で呼び出される。
- Awakeは、スクリプトのインスタンスがロードされたときに一度だけ呼び出される。
- Startは、スクリプトが有効になった最初のフレームのUpdateが始まる前に一度だけ呼び出される。
解答と解説を見る
正解: Updateは、実行環境のパフォーマンスに関わらず常に一定の時間間隔で呼び出される。
正解は「Updateは、実行環境のパフォーマンスに関わらず常に一定の時間間隔で呼び出される。」です。Update関数は、フレームごとに一度呼び出されますが、その間隔はフレームレート(fps)に依存するため、常に一定であるとは限りません。一方、FixedUpdateはプロジェクト設定で定義された一定の時間間隔で呼び出されるため、物理演算の処理に適しています。Update内で時間を扱う場合は、Time.deltaTimeを使用してフレーム間の差分を考慮する必要があります。
Unity認定 ユーザー:プログラマーの重要用語
- Debug.Log
- スクリプトの実行中にコンソールウィンドウへメッセージや変数の値を表示するためのメソッドです。プログラムが意図した通りに動作しているか、特定の処理が実行されたかを確認するために使用されます。開発のあらゆる段階で活用される最も基本的なデバッグ手法の一つであり、問題が発生している箇所の特定やデータの流れを追跡するのに非常に役立ちます。
- MonoBehaviour
- Unityにおけるスクリプトの基本クラスです。作成したC#スクリプトがこのクラスを継承することで、Unityのライフサイクルイベントを利用したり、GameObjectにコンポーネントとしてアタッチしたりできるようになります。このクラスを継承していないスクリプトは、シーン内のオブジェクトに直接追加して動作させることはできません。
- 構文エラー (Syntax Error)
- プログラムの記述ルールに従っていない場合に発生するエラーです。セミコロンの入力漏れや括弧の閉じ忘れなどが原因となります。Unityのエディタ上ではコンソールウィンドウに赤色のアイコンで表示され、このエラーが解消されない限りプログラムを実行することはできません。コードの構造を正しく評価し、記述ミスを迅速に特定する能力はプログラミングの基本となります。
- Scene View (シーンビュー)
- シーンを視覚的に構築・編集するためのウィンドウです。3Dまたは2D空間内でゲームオブジェクトを自由に配置、移動、回転、スケーリングすることができます。開発者が制作作業を行うメインの領域であり、カメラの視点に関わらず、自由な角度からオブジェクトを観察・操作できるのが特徴です。
- コンソールウィンドウ (Console Window)
- Unityエディタ上でログ、警告、エラーメッセージを確認するためのパネルです。Debug.Logの出力や、スクリプト実行時に発生したエラーの詳細が表示されます。エラーメッセージをダブルクリックすることで、原因となっているスクリプトの該当行を直接開くことができるため、バグの修正作業において中心的な役割を果たすインターフェースです。
- Start
- スクリプトが有効になったとき、最初のフレームのUpdateが呼び出される前に一度だけ実行されるメソッドです。主に変数の初期化や、他のゲームオブジェクトへの参照を取得するために使用されます。一度しか実行されないため、ゲーム開始時の準備処理を記述するのに適しており、試験でもUpdateとの実行順序の違いが頻出します。
- 論理エラー (Logic Error)
- 文法は正しいものの、プログラムの実行結果が意図した通りにならないエラーです。例えば、比較演算子の使い間違いや計算式の順序の誤りなどが挙げられます。コンソールにエラーが表示されないため発見が難しく、コードの動きを1行ずつ評価して、期待される値と実際の値のズレを確認するデバッグ作業が必要になります。動作の仕組みを論理的に理解する力が求められます。
- Game View (ゲームビュー)
- ゲームを実行した際に、プレイヤーの視点からどのように見えるかを確認するためのウィンドウです。エディタ上部の再生ボタンを押すことで、実際のゲーム動作を確認できます。アスペクト比の設定や解像度の変更、パフォーマンス統計(Stats)の表示もここで行い、最終的なゲーム画面の出力をテストします。
よくある質問
- Unity認定 ユーザー:プログラマーの問題はスキルサートで何問解けますか?
- 全485問・4分野の問題を用意しています。問題は出題範囲に沿って随時追加しています。
- 無料で使えますか?
- 無料プランで週10回の演習(1回10問)と、毎日の「今日の1問」を利用できます。解説を読み、わからない点はAIに質問できます。
- ここの問題は過去問ですか?
- 過去問ではありません。出題範囲に沿ってAIが作成した演習問題です。すべて解説つきで、間違えた問題は繰り返し解けます。
Unity認定 ユーザー:プログラマーの対策はアプリで
AIが毎週生成する新作問題・ランクマッチ・週次ランキング・AI診断で「続けられる」資格学習を。無料で始められます。