出題範囲
- 中核となるインタラクションのプログラミング>全般
- アートパイプラインでの操作>全般
- アプリケーションシステムの開発>全般
- シーンと環境デザインのプログラミング>全般
- パフォーマンスとプラットフォームの最適化>全般
- ソフトウェア開発チームでの作業>全般
- 一般的なC#プログラミング構造
- 中核となるインタラクションのプログラミング>ゲームオブジェクトおよび環境の動作とインタラクションを実装する
- 中核となるインタラクションのプログラミング>入力とコントロールを実装する方法を特定する
- 中核となるインタラクションのプログラミング>カメラビューとカメラ動作を実装する方法を特定する
- アプリケーションシステムの開発>メニューシステム、UI ナビゲーション、アプリケーション設定などのアプリケーションインターフェースフロー
- アプリケーションシステムの開発>キャラクター作成システム、インベントリ、ストアフロント、アプリ内課金など、ユーザーが制御するカスタマイズ
- アプリケーションシステムの開発>Unity Analytics などのツールを使用したスコア、プレイヤーレベル、ゲーム内経済など、ユーザーの進行度に関する機能を実装する
- アプリケーションシステムの開発>ヘッドアップディスプレイ (HUD)、ミニマップ、広告などの 2D オーバーレイを実装する
- アプリケーションシステムの開発>アプリケーションデータとユーザーデータの保存と取得
- アプリケーションシステムの開発>ネットワーキング機能とマルチプレイヤー機能の価値と影響を認識
- シーンと環境デザインのプログラミング>オーディオアセットを実装するためのスクリプトを決定する
- シーンと環境デザインのプログラミング>ゲームオブジェクトのインスタンス化、破壊、管理を実装する方法を特定する
- シーンと環境デザインのプログラミング>Unity ナビゲーションシステムによる経路探索のスクリプトを決定する
- パフォーマンスとプラットフォームの最適化>Unity Profiler などのツールを使用してエラーやパフォーマンスの問題を評価する
- パフォーマンスとプラットフォームの最適化>特定のビルドプラットフォームやハードウェア構成の要件に対処するための最適化を確認する
- パフォーマンスとプラットフォームの最適化>XR プラットフォーム向けの一般的な UI アフォーダンスおよび最適化を決定する
- ソフトウェア開発チームでの作業>バージョン管理 : Unity Collaborate などのツールの影響と使用
- ソフトウェア開発チームでの作業>テストおよびソフトウェア開発プロセスに対するその影響
- ソフトウェア開発チームでの作業>モジュール性、可読性、再利用性を実現するためのスクリプトを構成する手法の理解
- アートパイプラインでの操作>マテリアル、テクスチャ、シェーダーの知識 — Unity レンダリング API
- アートパイプラインでの操作>ライティングの知識 — Unity ライティング API
- アートパイプラインでの操作>2D アニメーションおよび 3D アニメーションの知識 — Unity アニメーションAPI
- アートパイプラインでの操作>パーティクルシステムの知識 – Unity パーティクル API
例題に挑戦
スキルサートのAIが生成した演習問題のサンプルです。アプリでは毎週新しい問題が追加されます。
例題1
Unityにおいて、SceneManager.LoadSceneAsyncを使用して複数のシーンをAdditive(加算)モードで読み込んだ際、シーン全体のライティング設定(スカイボックスや環境光など)を特定のシーンのデータに確実に切り替えるために使用すべきメソッドはどれか。
- SceneManager.LoadSceneParameters
- SceneManager.MergeScenes
- SceneManager.GetSceneAt
- SceneManager.MoveGameObjectToScene
- SceneManager.SetActiveScene
解答と解説を見る
正解: SceneManager.SetActiveScene
正解は「SceneManager.SetActiveScene」です。Unityで複数のシーンを同時に読み込んでいる場合、どのシーンの環境設定(Lightingパネルで設定したスカイボックス、フォグ、環境光など)を使用するかを決定するために「アクティブなシーン」を定義する必要があります。新しく読み込まれたシーンは自動的にアクティブにはならないため、このメソッドを呼び出して明示的に指定する必要があります。これにより、ランタイム中に環境デザインを動的に変更することが可能になります。
例題2
Unityのライティングと環境デザインに関する記述のうち、誤っているものはどれか。
- Light Probesは、静的なライトマップの情報を利用して、動的オブジェクトに近似的な間接照明を適用する。
- Reflection Probesは、実行時のレンダリング負荷を最小限に抑えるため、シーン内のすべてのプローブを毎フレームリアルタイムで更新することが推奨される。
- LOD Groupコンポーネントを使用すると、カメラからの距離に応じてメッシュの複雑さを自動的に切り替えられる。
- Occlusion Probesは、Light Probesのネットワークを利用して、動的オブジェクトに対する影の遮蔽情報を向上させる。
- Mixed LightingモードのSubtractiveでは、静的オブジェクトの影がライトマップに焼き付けられる。
解答と解説を見る
正解: Reflection Probesは、実行時のレンダリング負荷を最小限に抑えるため、シーン内のすべてのプローブを毎フレームリアルタイムで更新することが推奨される。
正解は「Reflection Probesは、実行時のレンダリング負荷を最小限に抑えるため、シーン内のすべてのプローブを毎フレームリアルタイムで更新することが推奨される。」です。これは誤った記述です。リフレクションプローブのリアルタイム更新は非常に計算負荷が高く、パフォーマンスを著しく低下させます。通常は「Baked」を使用して事前に生成するか、重要な場面でのみ「Via Scripting」で限定的に更新するのが一般的です。他の選択肢は、Unityの環境デザインにおける標準的な機能と最適化手法を正しく説明しています。
重要用語
- Addressable Asset System
- アセットの読み込みや管理を効率化するためのシステムです。従来のAssetBundleよりも抽象化されており、リモートやローカルなどの保存場所を問わず、アドレス文字列を使用して動的にアセットをロードできます。メモリ管理の自動化やビルド時間の短縮に寄与し、大規模なプロジェクトでのリソース管理においてプロフェッショナルレベルでは必須の知識となります。
- ScriptableObject
- 大量のデータを保存するために使用されるデータコンテナです。クラスのインスタンスごとに値を保持するのではなく、アセットとしてプロジェクト内に保存されるため、メモリ消費を抑えつつデータの共有が可能です。設定データ、アイテムデータ、ゲームの状態管理などに利用され、設計の柔軟性を高めるために重要な役割を果たします。
- 依存性の注入 (Dependency Injection)
- オブジェクト間の依存関係を外部から注入する設計パターンです。Unityでは特定のフレームワークを使用して実装されることが多く、コードの結合度を下げてテストの容易性や再利用性を向上させます。プロフェッショナルな開発において、疎結合なシステムを構築し、メンテナンス性の高いアーキテクチャを実現するために不可欠な手法です。
- 非同期プログラミング (async/await)
- メインスレッドを停止させることなく、通信やファイル入出力などの重い処理を実行するための手法です。C#の標準機能であるasync/awaitを用いることで、従来のリコルーチンよりも直感的に非同期処理を記述でき、例外処理も容易になります。ユーザーインターフェースの応答性を保ちながら複雑な処理を並行して行うために活用されます。
- カスタムエディタ (Custom Editor)
- Unityエディタのインスペクターやウィンドウを、プロジェクト固有のニーズに合わせて拡張する機能です。Editorクラスを継承して独自のUIを作成することで、開発効率の向上やデータの入力ミス防止に繋がります。プログラマーは独自のツールを作成し、アーティストやデザイナーが作業しやすい環境を整える役割も担います。
- Unity Profiler
- アプリケーションのパフォーマンスを詳細に分析するためのツールです。CPU使用率、メモリ消費量、レンダリング負荷などをリアルタイムで可視化し、ボトルネックの特定に役立てます。プロフェッショナル開発では、目標とするフレームレートを維持するために、プロファイラーを駆使して最適化を行うスキルが強く求められます。
- AssetBundle
- Unityでビルド済みのランタイムアセットを外部ファイルとしてアーカイブした形式です。アプリ本体のサイズを削減し、リリース後の追加コンテンツ配信や動的なリソース読み込みを可能にします。Addressablesの基盤技術でもあり、キャッシュ管理や依存関係の解決など、高度なリソース運用設計において理解が必要となる要素です。
- UnityWebRequest
- HTTP通信を通じてWebサーバーとデータのやり取りを行うためのAPIです。JSONデータの送受信、画像のダウンロード、ファイルのアップロードなどのネットワーク処理を実装する際に使用します。モバイルゲームやオンライン機能を持つアプリケーション開発において、バックエンドシステムとの連携を支える重要なコンポーネントです。
Unity認定 プロフェッショナル:プログラマーの対策はアプリで
AIが毎週生成する新作問題・ランクマッチ・週次ランキング・AI診断で「続けられる」資格学習を。無料で始められます。