Unityの心臓部!ゲームオブジェクトとコンポーネントを徹底解説
Unity開発の最も基本的な概念である「ゲームオブジェクト」と「コンポーネント」の関係性を、初心者にも分かりやすく解説。空のオブジェクトに機能を追加していくUnityの設計思想を学びます。
Unityの使い方を、C#とMonoBehaviourの基礎から2D・3D・UI・アニメーション・最適化まで順に学べる技術ノート。全100記事を、カテゴリごとに基礎から並べています。
Unity開発の最も基本的な概念である「ゲームオブジェクト」と「コンポーネント」の関係性を、初心者にも分かりやすく解説。空のオブジェクトに機能を追加していくUnityの設計思想を学びます。
UnityでC#スクリプトを作成する際に必ず登場するMonoBehaviourクラスとは何か?その役割と、transformやgameObjectといった便利なプロパティの使い方を初心者向けに解説します。
Unityのスクリプトがどのような順序で実行されるのか、Awake、Start、Updateなどの主要なイベント関数の役割と違いを初心者向けに徹底解説します。
Unityでゲームを動かす言語、C#。この記事では、Unity開発を始める上で最低限知っておくべきC#の基本的な文法(変数、データ型、関数、制御構文)を、初心者向けに優しく解説します。
enemy1, enemy2, enemy3...と変数を増やしていませんか?複数のデータをまとめて扱う「配列」と「List」の使い方を、Unityでの実用例(スポーン地点の管理・敵リスト)とともに初心者向けに解説します。
サンプルコードは写せるのに「 クラスをどう分けるか」で手が止まる——多くのUnity初心者が変数と関数の次にぶつかる壁です。クラスとインスタンス、値型と参照型、nullとUnity特有の破棄済み判定、[SerializeField] privateとプロパティ、継承とコンポジションの使い分け、そしてinterfaceによる共通化まで、IDamageableを使った実例で「スクリプトの分け方」を解説します。
Unity開発の効率を飛躍的に向上させる最重要機能の一つ、Prefab(プレハブ)。Prefabとは何か、その作り方から使い方、そしてネストやバリアントといった応用までを徹底解説します。
大規模なプロジェクトでも混乱しないための、Unityのファイル管理術を解説。シーンの役割と分け方、_Projectフォルダで自作と外部アセットを分離する定番構成、.metaとGUIDの仕組み(移動は必ずUnityエディタ内で)まで、フォルダ整理のベストプラクティスを紹介します。
「昨日までは動いていたのに」からいつでも戻れるように——フォルダコピーのバックアップを卒業して、UnityプロジェクトをGitで管理する方法を解説します。Force TextとVisible Meta Files、Unity向け.gitignore、.metaをセットでコミットする理由、大きいバイナリを預けるGit LFS、そして共同制作でSceneの競合を避ける定番ルールまで、「壊しても戻れる」開発基盤を作ります。
レイヤーとタグの使い分け、衝突判定の制御、LayerMaskを使ったRaycast最適化など、オブジェクト管理の基本を解説。
UnityのNew Input Systemの使い方を解説。Input Actions、Binding、Player Inputコン ポーネントを使って、マルチプラットフォーム対応の入力処理を実装できます。
基礎記事を読んだのに、白紙のプロジェクトを前にすると手が止まる——その壁を越えるための総仕上げ記事です。60秒でコインを集める1画面ゲームを、Scene準備・Prefab・入力・Trigger取得・スコアと残り時間のUI・Title/Playing/Resultの状態管理・リトライ・ビルドまで一本道で完成させ、最後にEditorの外で遊べる形で友達に渡します。素材はCubeとSphereだけ、スクリプトは4本だけです。
設定画面の「キー変更」ボタン、どう作る?New Input SystemのPerformInteractiveRebindingを使ったキーコンフィグ(リバインド)の実装を、Bindingの上書きの仕組みからUI連携、保存・復元まで順番に解説します。
Unityにおける二つの主要な更新関数、UpdateとFixedUpdate。それぞれの実行タイミングの違いと、ゲームロジックと物理演算でどちらを使うべきかという重要な使い分けを、具体例と共に解説します。
他のコンポーネントの機能を使いたい時に必須のメソッド、GetComponent。基本的な使い方から、子や親オブジェクトからの取得、パフォーマンスを意識したキャッシュ方法まで、徹底的に解説します。
オブジェクト同士の接触を検知するOnTriggerEnterとOnCollisionEnter。これらのイベント関数がいつ、どのよ うに呼び出されるのか、その違いと正しい使い分けを初心者向けに解説します。
数秒待ってから処理を再開したい、重い処理を少しずつ分割して実行したい。そんな時に役立つUnityの強力な機能「コルーチン」。IEnumeratorとyield returnの仕組みを初心者にも分かりやすく解説します。
「待つ処理」を書くとき、コルーチンとasync/awaitのどちらを使うべきか——Unity開発の定番の悩みを整理します。両者の仕組みの違い、使い分けの基準、Unity 6のAwaitable、破棄済みオブジェクト問題まで解説します。
バグは友達、怖くない!Unity開発における最も基本的なデバッグ手法であるDebug.Logの使い方から、よくあるエラーメッセージの読み解き方、そしてデバッガを使った高度なデバッグまでを解説します。
ゲームのタイトル画面からステージへ、ステージからリザルト画面へ。ゲームの流れを作るために不可欠なシーン遷移の方法を、SceneManagerクラスを中心に初心者向けに解説 します。
シーン切り替え時もオブジェクトを保持するDontDestroyOnLoadの使い方と、シングルトンパターンによる安全な管理方法を解説します。
Unityでオブジェクトを滑らかに動かすための必須関数、Lerp(線形補間)とSlerp(球面線形補間)を初心者向けに解説。減速する理由(イージングアウト)や、等速で動かすMoveTowards / RotateTowardsとの使い分けも実践コード付きで紹介します。
Quaternionの基本概念とオイラー角との違いを解説。ジンバルロックの仕組み、eulerAngles直接操作の落とし穴、LookRotationやSlerpを使った実践的な回転制御まで、コード例付きで学べます。
GetComponentや直接参照の多用は、コードを複雑で壊れやすくします。C#の強力な機能であるデリゲート(delegate)とイベント(event)を使い、オブジェクト間の依存関係を断ち切り、拡張性と再利用性の高い疎結合なシステムを設計する方法を解説します。
攻撃判定・体力・無敵時間は、ほぼすべてのアクション系ゲームで最初に必要になる 基礎システムなのに、「1振りで3回ダメージが入る」「死亡処理が2回走る」と壊れやすい難所でもあります。Health・Hitbox・Hurtboxの役割分担、攻撃アニメに合わせた判定窓、同じ攻撃を1対象1回に束ねる管理、無敵時間とダメージ点滅の分離まで、プレイヤー対敵のアリーナを題材に完成させます。
UnityでのSingletonパターンの正しい実装方法と、使用時の注意点を解説します。汎用MonoSingleton基底クラスの作り方、実行順序や重複生成の落とし穴、乱用を避ける判断基準まで紹介。
if文やswitch文のネスト地獄から脱却しよう。オブジェクト指向の古典的な設計パターンである「Stateパターン」を使い、キャラクターの複雑な状態(待機、攻撃、防御、逃走など)を、クリーンで拡張性の高いステートマシンとして実装する方法を解説します。
ゲーム全体の流れをどう管理するか?ゲームの状態(タイトル、プレイ中、ゲームオーバー)を制御し、スコアやプレイヤーの状態といった重要な情報を一元管理するための基本的な設計パターン「Game Manager」の実装方法を解説します。
GameManager・AudioManager・SaveManager——マネージャーが5個を超えたあたりから、「Gameシーンから再生するとnullで落ちる」「Awakeの順番次第で壊れる」「タイトルへ戻ると常駐オブジェクトが2個に増える」という定番の泥沼が始まります。答えは、常駐するものを最初のBootstrapシーンで1回だけ・決めた順番で組み立てること。初期化順の明示、Additiveなシーン構成、どのシーンから再生しても動く保険まで、Manager群の土台を作り直します。
Time.timeScale = 0でポーズを作ったら、メニューのアニメまで止まってしまった——ポーズ実装の定番のつまずきを解決します。timeScaleの仕組み、何が止まり何が止まらないか、ポーズ中も動くUIの作り方、timeScale方式の限界までを解説します。
ジャンプが連打される、Input Systemを入れたらInput.GetKeyが例外を吐く——入力処理の定番のつまずきを解決します。GetKeyDown/GetKey/GetKeyUpの使い分け、仮想軸の仕組み、GetAxisとGetAxisRawの違い、新Input Systemへの移行判断までを解説します。
C#のAttributeを使ってUnityのインスペクターをカスタマイズする方法を解説。SerializeField、Header、Range、RequireComponentなど実践的な使い方を紹介します。
UnityのGizmosを使ってシーンビューでデバッグ情報を視覚化する方法を解説。空のGameObject、トリガー範囲、AIの検知範囲などを表示できます。
Debug.Logの目視確認と自動テストは何が違うのか——から始めるUnity Test Framework入門。Edit Mode/Play Modeテストの使い分け、AAAパターン、つまずきやすいAssembly Definitionの正体、ゲームで「何をテストすべきか」の線引きまで解説します。
チュートリアル通りに書いたのに警告が出る——古い記事やAIの回答に含まれる非推奨APIとの付き合い方を解説。FindObjectOfTypeやRigidbody.velocityなど、Unity 6時代の読み替え表と、警告に出会ったときの調べ方をまとめたリファレンスです。
staticイベントによる疎結合には「クラス名への依存」「シーンをまたぐ購読残り」という限界があります。イベントをScriptableObjectアセットとして扱う「イベントチャネル」パターンで、さらに柔軟で安全なイベント設計を実現する方法を解説します。
UnityのAnimator Controllerでキャラクターアニメーションを管理する方法を解説。State Machine、Transition、Parameters、Blend Treeの使い方を詳しく紹介します。
WASDで8方向に滑らかに動き、走りながら上半身だけ攻撃する——3Dキャラクターらしい動きの正体は、2D Blend Tree・Avatar Mask・Root Motionの組み合わせで す。Animator Controllerの基本を卒業した人向けに、3Dキャラ特有のテクニックを解説します。
モーションは再生できる。でも「振り下ろした瞬間にダメージを出す」「踏み込みと移動を一致させる」「手を壁にぴたりと合わせる」になると急に難しくなる——アニメーションとゲーム世界の同期の問 題です。モーションの特定フレームでコードを呼ぶAnimation Event、移動をアニメに任せるRoot Motion、手足を対象へ吸着させるIKの3つを、使いどころ・落とし穴・実戦コードつきで解説し、踏み込み斬りを完成させます。
Unity Timelineの使い方を解説。アニメーション、オーディオ、カメラの動きを時間軸で管理し、カットシーンやシネマティック演出を作成する方法を紹介します。Cinemachineとの連携も詳しく解説。
Unityの3種類のレンダーパイプライン(Built-in、URP、HDRP)の違いと選び方を解説。パフォーマンス比較、機能比較、プロジェクトに最適なパイプラインの選定方法を紹介します。
UnityのShader Graphを使ってプログラミング不要でシェーダーを作成する方法を解説。ノードベースのビジュアルエディタで直感的にマテリアルをカスタマイズできます。
Unityのポストプロセッシング(Post Processing)の使い方を解説。Bloom、Color Grading、Depth of Fieldなど主要なエフェクトの設定方法と、Built-in RP/URPでの実装手順を紹介します。
別のカメラが映した映像をUIや3Dオブジェクトに貼る——ミニマップ・鏡・監視カメラ・ポートレートの入口がRender Textureです。Render Textureとは何か、Camera→Render Texture→RawImage/Materialの基本セットアップ、見下ろしミニマップの作り方、毎フレーム描画の負荷対策まで解説します。
Unityの公式カメラ制御パッケージCinemachineの使い方を解説。Virtual Camera、カメラシェイク、障害物回避など、スクリプトなしで高品質なカメラワークを実現できます。
カメラをプレイヤーに追従させたら、ガクガク揺れて画面酔いする——手書き追従スクリプトの限界です。Cinemachineのフォローカメラを題材に、Dead Zone・Damping・Lookaheadなど「追従の気持ちよさ」を決めるパラメータのチューニングを実践的に解説します。
攻撃がヒットしても画面が地味——足りないのはエフェクトです。Unity標準のパーティクルシステム(Shuriken)のモジュール構造を「パーティクルの一生」で整理し、ヒットエフェクトを作る実践レシピまで解説します。
Unity VFX Graphの使い方を解説。GPUベースで大量のパーティクルを高パフォーマンスで表示できるビジュアルエフェクト作成ツールの基本構造、従来のParticle Systemとの違い、実践的な使い方を紹介します。
攻撃判定は正しく動いてHPも減るのに、遊ぶと手応えがなく「豆腐を叩いているみたい」——それはバグではなく、演出(ゲームフィール)が足りていません。ヒットフラッシュ・パーティクル・SE・カメラシェイク・ヒットストップを同じ一撃へ一枚ずつ重ね、弱・強・クリティカルの強度プリセットまで、ON/OFF比較で「どの演出が何を伝えるか」を体感しながら組み上げます。敵全員が光る・カメ ラが戻らない・時間が戻らないという定番事故の回避も扱います。
映像は完成しているのに、遊ぶとどこか安っぽい——足りないのは音です。Audio Source/Listenerの基本、BGMとSE(PlayOneShot)の定石実装、Spatial Blendによる2D/3Dサウンドの使い分け、Audio Mixerによる音量設定まで解説します。
同じBGMをループさせるだけでは場面の緊張感は出せません。Audio Mixerのスナップショットで状況に応じてBGMを切り替え、ダッキングで会話中だけBGMを下げ、クロスフェードで曲を途切れず入れ替える——ゲームの「らしさ」を上げる動的な音楽制御を実装コードとともに解説します。
ゲームがカクつくのに、どこが重いのかわからない——最適化の鉄則は「推測するな、計測せよ」です。Profilerでスパイクの犯人を特定する実践的な手順(CPU Usage・Time msとSelf ms・GC Alloc列)から実機プロファイリングまで解説します。
フレームレートは足りているのに実機で突然落ちる、シーンを戻ってもメモリが戻らない——それはGCスパイクではなく常駐メモリの問題です。Memory ProfilerパッケージによるSnapshotの撮り方、Unity Objectsビューでテクスチャ・Mesh・AudioClipを読む方法、Before/After比較で「シーンを戻っても残るもの」を突き止める捜査手順、端末ごとのメモリ予算の考え方まで、実機クラッシュの原因調査を一本道で解説します。
数秒おきにゲームがガクッと止まる——その正体は多くの場合ガベージコレクション(GC)です。GCがなぜカクつきを引き起こすのかをスタック/ヒープの仕組みから解説し、ガベージを出さない具体的なコーディングテクニックとIncremental GCを紹介します。
弾を連射するたびにカクつく——原因はInstantiateとDestroyの繰り返しです。オブジェクトを使い回すプーリングの仕組みを、自前のシンプル実装とUnity公式のObjectPool<T>(UnityEngine.Pool)の両方で解説します。
オブジェクトを置くほどフレームレートが落ちる——その原因の多くはドローコールです。CPUからGPUへの描画命令の仕組みと、SRP Batcher・スタティックバッチング・GPUインスタンシングなど現行の削減テクニックの使い分けを解説します。
3Dステージが広がるほどフレームレートが落ちていく——原因の多くは「遠くの高精細モデル」と「壁の裏の見えないオブジェクト」を律儀に描き続けていることです。距離に応じてモデルを差し替えるLOD Group、遮蔽物の裏を描画から外すOcclusion Culling、Far Clipとフォグによる距離設計まで、「見えないものは描かない」ための3つの道具を、街ステージの軽量化を題材に解説します。
Update()の呼び出し自体にコストがあることを知っていますか?数千のオブジェクトが動く場面で効く高度な最適化「カスタムアップデートマネージャー」を、Update呼び出しの仕組み(ネイティブ/マネージドのブリッジ)から実装まで解説します。
Profilerで特定した犯人が「数千〜数万件の距離計算」のような大量の数値計算だった時、GCやUpdate Managerの最適化だけでは足りなくなります。UnityのJob SystemとBurstコンパイラは、独立した大量計算をワーカースレッドへ配って並列化する公式の仕組み。NativeArrayの受け渡しとDisposeの責任、IJobParallelFor+Burstの最小例、Schedule→別作業→Completeの正しい順序、そして「小規模なら普通のC#でよい」という引き際まで、1万体の距離計算を題材に入門します。
PCでは快適なのに実機に入れるとカクつく・端末が熱くなる——モバイルには熱とバッテリーというPCにない制約があります。レンダリング・CPU・メモリ・モバイル特有対応の4本柱で、モバイル最適化の全体像と各論への入口をまとめます。
インポートしたドット絵がぼやける、キャラの大きさがバラバラになる——2Dの初手でつまずくのはたいていインポート設定です。Sprite設定・Pixels Per Unit・Filter Modeの3点から、スプライトシートのSprite Editor分割、Sprite Atlasまでを解説します。
キ ャラが勝手に転ぶ、弾がすり抜ける、坂で引っかかる——2D物理のあるあるトラブルには全部定番の直し方があります。Rigidbody2DのBody Type、Collider2Dの使い分け、Is Trigger、そして2Dプラットフォーマーの実装イディオムまでを解説します。
スプライトシートは分割した。では、どうやって「歩き」や「ジャンプ」とし て動かす?——Animationウィンドウでのクリップ作成、Animatorコントローラーでの切り替え、スクリプト制御まで、2Dキャラクターに命を吹き込む一連の流れを解説します。
2Dゲームの地形はTilemapで効率よく作れます。Grid・Tilemap・Tile Paletteの関係、Tilemap Collider 2DとComposite Collider 2Dによる当たり判定、地面と装飾のレイヤー分け、Rule Tileによる境界の自動化、SetTileでのスクリプト配置まで解説します。
2Dゲームの雰囲気はライティングで激変します。URPの2D Rendererへの切り替え、Light 2Dの4タイプ(Global・Point・Freeform・Sprite)の使い分け、Global Lightで暗くしてPoint Lightで明かりを足す設計、Shadow Caster 2Dで影を落とす方法、松明を持つプレイヤーの実践例まで解説します。
壁にめり込む、すり抜ける、動きがカクつく——物理まわりの定番トラブルはRigidbodyの理解で解決します。transformとの使い分け、AddForceとlinearVelocityの選び方、ForceMode、Is Kinematicまで、物理演算の心臓部を解説します。
3Dアクションの第一歩は「キャラを気持ちよく歩かせる」こと。RigidbodyとCharacterControllerの使い分け、Move()による移動、isGroundedの接地判定、重力とジャンプの自前実装、カメラ基準の移動、Slope LimitとStep Offsetによる坂・段差まで、歩く・ジャンプする・坂を登る定番実装を解説します。
「今見ているものは何か」「クリックした先に何があるか」「地面に立っているか」——空間の問いに答える万能ツールがPhysics.Raycastです。基本の書き方から 、クリック選択・接地判定の定番レシピ、つまずきやすいレイヤーマスクまで徹底解説します。
モデルが巨大に表示される、横倒しになる、マテリアルがピンクになる——3Dモデルのインポートあるあるを解決します。DCCツール側のエクスポート注意点から、Model/Rig/Animation/Materialsの4タブ設定、Humanoidのアニメ再利用までを徹底解説します。
同じ球が、設定ひとつで金にもプラスチックにもゴムにも見える——それがマテリアルとシェーダーの力です。両者の関係から、Lit/Unlitの使い分け、PBRの3大プロパティ、質感レシピ早見表、renderer.materialの罠までを解説します。
同じシーンが、ライティング次第で昼にも夜にもホラーにもなる——3Dの印象を最も大きく左右するのが光です。4種のライトの使い分け、リアルタイムとベイクの二本柱、Global Illumination、影のコストまで、光と影を操る基礎を解説します。
1台の画面を分けて2人プレイ——ローカル協力・対戦の基礎を作ります。複数カメラのViewport Rectによる画面分割、New Input SystemのPlayerInputManagerによるプレイヤーごとの入力割り当て、各自のUIまで、スプリットスクリーンの土台を解説します。
UnityのTerrainシステムを使って広大な自然環境を作成する方法を解説。地形のスカルプト、テクスチャペイント、木や草の配置、パフォーマンス最適化まで詳しく紹介します。
敵がプレイヤーに向かって直進して壁に引っかかる——その解決策がNavMesh(経路探索)です。NavMeshSurfaceでのベイクからNavMesh Agentの設定、SetDestinationによる追跡AI、巡回→発見→追跡→捜索の実践パターンまで、賢い敵の作り方を解説します。
敵AIが複雑になるとステートマシンでは分岐が爆発します。Behavior Treeは振る舞いを木構造で組み立て、再利用・拡張しやすくする定番手法。Sequence・Selector・条件・アクションの基本ノード、Success/Failure/Running、ステートマシンとの使い分け、Unity 6のBehaviorパッケージ、巡回→発見→追跡→攻撃の実装まで解説します。
ステルスゲームの「見つかる」を作ります。敵の視界を距離・角度・Raycastの遮蔽チェックの3段階で判定し、プレイヤーを検知する仕組みを解説。壁に隠れると見つからない視界コーンの実装から、発見時の状態遷移、Gizmosでの可視化まで、ステルスAIの検知ロジックを扱います。
エディタでは完璧だったUIが、実機やウィンドウサイズ変更で崩れる——原因はほぼアンカーとCanvas Scalerです。Canvas・RectTransform・アンカーの3大概念から、画面サイズ対応の定番設定(Scale With Screen Size)、UIパーツ別のアンカー早見表までを解説します。
ボタンを置いたのに押しても反応しない——初心者が最初にハマるUIトラブルです。onClickの2つの登録方法、クリックが届くまでの仕組み(EventSystem・Graphic Raycaster)、反応しない3大原因、Transitionによる押し心地、長押しの実装までを解説します。
アイテム欄のスロットを1個ずつ手で並べていませんか?Layout Group(Horizontal/Vertical/Grid)を使えば、UIの整列はUnityに任せられます。3種の使い分け、Content Size Fitterとの組み合わせ、あるあるトラブル、ScrollViewと組むインベントリグリッドの実践までを解説します。
PCで動いたゲームをスマホへ持っていくと、操作とUIの問題が一気に自分ごとになります。New Input SystemのEnhanced Touchによるタップ・ドラッグ・長押しの判定、2本指のピンチとパン、UI上のタッチをゲーム操作へ通さない定番ガード、そしてScreen.safeAreaでノッチやパンチホールを避けるUI配置まで、モバイル対応の入口をまとめて解説します。
音量はAudioMixer、解像度はScreen、言語はLocalization、キーコンフィグはInput System——個別のやり方は分かったのに、いざ「設定画面」を作ると、保存がバラバラ・起動時に復元されない・適用タイミングが揃わないと崩壊しがちです。SettingsDataに1本化し、適用役と保存役を分け、起動時に全設定を復元するSettingsManagerを完成させます。各分野の詳細は既存記事へつなぐ、統合のための記事です。
uGUIは使える。でもUnity 6時代に存在感を増すUI Toolkitは、いつ選べばいいのか——結論は「置き換え」ではなく「使い分け」です。UIDocument・UXML・USSの役割分担、UI Builderで作った画面をC#から操作する方法、USSクラスによる状態の切り替え、ListViewの仮想化まで、クエストログ画面を題材にランタイムUIの作り方を解説します。uGUIを残すべき場面も明確にします。
TextMeshProの導入からリッチテキスト機能、パフォーマンス最適化まで解説。高品質なテキスト表示を実現しましょう。
RPGやADVの会話ウィンドウを、最小構成で作ります。セリフをScriptableObjectで定義し、TextMeshProで1文字ずつ表示するタイプライター演出、クリックで送る仕組み、選択肢による分岐まで、データとUIを分離した会話エンジンの作り方を解説します。
ゲームの音量設定やハイスコアなど、簡単なデータを保存するための機能「PlayerPrefs」。その基本的な使い方であるSetInt, GetIntや、使うべきでないケース、そして暗号化の必要性について解説します。
プレイヤーの進捗を保存するセーブ機能はゲームに不可欠。PlayerPrefsの限界を超え、JSON形式とUnityのJsonUtilityクラスを使って、複雑なゲームデータをファイルに保存・読込する方法を、具体的なC#コード例と共に解説します。
公開したゲームで最も痛い報告が「セーブデータが消えました」。JSONで保存できるようになった次に必要なのは、壊れない仕組みです。書き込み中のクラッシュに耐える一時ファイル方式、File.Replaceで自動的に残る世代バックアップ、try-catchと値の補正による防御的な読み込み、そしてゲーム更新でデータ構造が変わってもセーブを引き継ぐsaveVersionとマイグレーションまで、進行データを守る定番パターンを解説します。
ScriptableObjectでデータ駆動設計を実現する方法を解説。基本概念からイベントシステム応用まで、実践的なコード例付き。
RPGやサバイバルの持ち物欄を、データとUIを分 離して作ります。アイテムをScriptableObjectで定義し、スロットのデータ構造、追加・削除・スタック処理、グリッドUIへの反映、セーブまで、拡張しやすいインベントリシステムの土台を解説します。
会話もインベントリもセーブもできたのに、「薬草を3個集めて村人へ戻る」というただのお使いが組めない——進行管理をどこに置くかが決まっていないからです。クエストを4つの状態で捉え、マスターデータと進行データを分離し、会話の選択肢から受注、インベントリの変化で進捗更新、報告と報酬、セーブ復元まで。受注前に持っていたアイテムの扱いや報酬の二重受取といった定番の穴も塞ぎながら、薬草クエストを最初から最後まで完 成させます。
「とりあえずResourcesフォルダ」で動いてはいるけど、なぜ非推奨と言われるのか——Unityのアセットがメモリに乗る仕組みから、直接参照・Resources・Addressablesの3方式の長所短所と使い分けの判断基準までを解説します。
Unity公式のアセット管理システムAddressablesの使い方を解説。AssetBundleの複雑な管理を自動化し、ビルドサイズ削減やダウンロードコンテンツ配信を簡単に実現できます。
「Addressablesならアプリ更新なしでコンテンツを配信できる」——その言葉を信じてAddressable化したのに、実際はすべてビルドに同梱されたまま。足りないのはRemoteの設定です。Build PathとLoad Pathの意味、アプリと中身をつなぐカタログ、起動時のCheckForCatalogUpdates→UpdateCatalogsの流れ、変えてよいものと凍結すべきものを分ける更新ビルドまで。イベント衣装を後日配信する題材で、リリース後のコンテンツ更新を一通り動かします。
Unity公式のLocalizationパッケージを使った多言語対応の方法を解説。テキスト、画像、音声のローカライズからSmart Stringsによる動的テキストまで詳しく紹介します。
完成したゲームを人に遊んでもらう最後の関門「ビルド」。Build Profiles(旧Build Settings)の基本、Player Settingsの必須項目から、PC・WebGL・Android・iOSそれぞれの手順と注意点まで解説します。
オプション画面の「解像度」「フルスクリーン切り替え」はPCゲームの必須機能です。Screen.SetResolutionによる動的変更、FullScreenModeの使い分け、Screen.resolutionsで選択肢リストを作る実装、設定の保存までを解説します。
オンラインマルチプレイヤーの基礎を、Unity公式のNetcode for GameObjectsで学びます。サーバーオーソリティの考え方、NetworkObject/NetworkTransformによる同期、NetworkVariable、RPCまで、最初に押さえるべき概念を解説します。
Netcode for GameObjectsでローカルの同期はできた——でも友達の家とはつながらない。その壁の正体はNATで、越える道具がUnityのRelayとLobbyです。UGSの初期化と匿名サインイン、HostのRelay割り当てとjoinコード発行、Clientの参加、合言葉で入れる部屋(Lobby)の作成とハートビート、切断時の後始末まで、「友達と遊べる」最小のオンライン協力セッションを完成させます。