Unityアプリ開発FAQ【Tips編】 | VRプロフェッショナルアカデミー/No1.VR/AR専門プロフェッショナルスクール

Unityアプリ開発FAQ【Tips編】

Top  >   よくある質問:Q&A  >   Unityアプリ開発FAQ【Tips編】

Unityアプリ開発FAQ【Tips編】では、開発中によくある「◯◯がしたい」といった
具体的な操作や機能に関する質問とその回答をまとめています。
Unityアプリ開発に関するエラー及びXRアプリ開発に関する項目を調べたい場合は
下記ボタンより閲覧ください。

=Unityアプリ開発FAQ
【Tips編】=

Unityインストール・セットアップ

  • 考えられる原因として下記の可能性があります。
    1:インストール先のパスに日本語が含まれている。日本語記述がない場所にインストール先を変更すると解決する場合があります。
    2:ウイルス対策ソフトが起動しており、インストールを防いでいる可能性があります。ウイルス対策ソフトの機能にある、一時的にセキュリティ保護をオフにすることでインストールが出来る場合があります。
    3:PCの空き容量が不足している可能性があります。インストール先に10GB以上の空きがあるのか確認してください。

  • UnityProjectを開く際に「Safe Mode」のポップアップが出る場合は、プロジェクト内にエラーが発生している事が原因です。
    こちらは基本「Ignore」を押していただいて構いません。
    そしてエラーの解決策として次のアプローチがあります。
    1:開くプロジェクトには他に必要なツールと依存関係がある可能性があります。ダウンロード先のドキュメントをよく読み、プロジェクトを開くために他に必要なものは無いか確認を行ってください。

    2:開くプロジェクトのUnityバージョンが低すぎる可能性があります。作成されたUnityProjectと同じバージョンをインストールしてから再度開いてみてください。

    3:GitHubからProjectをダウンロードする場合、Git機能を使わないと必要な部品が同時にダウンロードされない場合があります。この場合はGitツールを使ってProjectをダウンロードするようにしてください。

    4:開発プラットフォームが特定の環境下でないと動かない場合があります。一度Projectを開いたあと、目的の開発プラットフォームにProjectを変更するとエラーが解決する場合があります。

  • 考えられる原因として下記の可能性があります。
    1:「Visual Studio Tools for Unity」がインストールされていない可能性があります。Visuak Studioのインストローラーから拡張機能の「Visual Studio Tools for Unity」をインストールしてください。
    2:Unity内の外部ツールの設定が正しく行われていない可能性があります。Unityのメニューから「Edit」 > 「Preferences」 > 「External Tools」を選択し、正しいVisual Studioが設定されているかを確認してください。

  • https://unity.com/ja/download を表示してください。
    このページがダウンロードページとなります。

  • Windowsボタンをクリックして、検索欄に「Unity Hub」と入力してください。
    Unity Hub というアプリが結果に表示されますので、クリックしてください。

  • https://id.unity.com/ja を表示してください。
    このページのUnity IDをお持ちでない場合、「こちらでIDを作成してください」という表記の「IDを作成」部分のリンクからアカウントを作成するページを表示できます。

Unity基本操作

  • PCの環境によって操作が異なります。
    1:Windowsの場合
    Ctrl + Z を押してください。
    2:Macの場合Command + Z 押してください。
    ※コードの変更やオブジェクトの移動などの一般的なアクションを元に戻します。

  • プロジェクト名の下に下記のような表示があります。
    /Users/〇〇/〇〇/….
    こちらが作成したUnityプロジェクトが保存された場所になります。

  • オブジェクトがカメラの視野外にあるかどうかを確認してください。
    オブジェクトがSceneビューで見えるがGameビューで見えない場合、カメラの位置や向きがオブジェクトを捉えていない可能性があります。

  • シーン再生中の変更は反映されません。そのため、シーンの再生を停止してから、変更を加えてください。

  • 解除したいPrefabを右クリックで選択
    「Prefab」 >「 Unpack」の順で選択することで解除することができます。

  • Unityのメニューバーにある「Window」> 「General」 を選択し、表示させたいビューやウィンドウを選択することで再表示させることができます。

  • Inspector右上に開いている鍵のアイコンがあります。クリックして閉じた鍵に切り替えると、他の項目を選択しても切り替わらず作業効率が上がります。

  • Hierarchビューの左にある目のアイコンでオブジェクトの表示/非表示を切り替えることができます。また目の右側の手をクリックするとシーン上でオブジェクトを選択しなくなるので開発操作がしやすくなります。

  • 1:Unityエディタの上部にあるメニューバーから「Edit」>「Project Settings」>「Tags and Layers」を選択します。ここで新しいレイヤーを追加してください。
    2:シーン内のオブジェクトを選択し、Inspectorウィンドウで「Layer」ドロップダウンメニューから追加したレイヤーを割り当てます。
    3:「Edit」>「Project Settings」>「Physics」を開きます。「Layer Collision Matrix」から対象のチェックボックスを外すと、重なるレイヤー同士が衝突するかを設定できます。
    【覚えておきたい】
    チェックを外すことで計算を減らしパフォーマンスを向上させることができます。またヒエラルキーでオブジェクトを選択し、インスペクターの「Layer」>「Add Layer…」を選択してもレイヤーを追加できます。

  • Colliderを持つオブジェクトを選択した状態で、InspectorのColliderコンポーネントを見てください。
    Edit Colliderの項目にボタンがあるので選択すると、シーン上でコライダーの大きさを変更することができるます。
    コライダーの線上に見づらいですが■が現れます。クリックしながら移動させると大きさを変更することができます。またインスペクターのCenter値でも変更できます。

  • 1:「Window」>「Rendering」>「Lighting」を開いてください
    2:「Lighting」の設定画面が開いたら上部の「Environment」を選択
    3:「Lighting」内の「Environment」>「Skybox Material」があるので、右側の◎をクリックする
    4:Unity Project内のSkyboxマテリアル一覧が出てくるので、設定したいSkyboxを選択

  • 1:Assetsフォルダ内からピンクMaterialをクリック
    2:「Edit」 >「 Rendering」 >「 Materials」 >「 Convert Selected Built-in Materials to URP」をクリック
    3:メニューが開いたら「Proceedを選択」してください。

  • CanvasのInspectorで[Render ModeをScreen Space – Overlay]→[World Space]に変更。
    これでRect Transformが触れるようになります。最初はサイズが大きいので0.01から調整してください。

  • シーンの右側にある▼をクリックしてください。一番上の3D Iconsのスライダーを下げてみると見やすく編集できます。

  • TransformのScaleにXYZの大きさを変更できる項目があります。Xの左側にあるボタンをクリックしてサイズを変更してみてください。XYZが一括で変更できると思います。
    ステージや建物のサイズを変更するときは歪まないように一括で変更してください。

  • Unity Editerで「Assets」>「Import Package」>「Custom Package」を選択してください
    フォルダが開いたらダウンロードをクリックして、購入したアセットを選択して開いてください。

  • 基本操作はマウスを使用するので、これらの基本操作をマスターすることでゲーム開発がよりスムーズに進みます

  • 「Edit」>「Preferences」 >「 SceneView」 >「Create Objects at Origin」にチェックマークをつけてください。
    この設定をすることで新規オブジェクトは毎回原点(0,0,0)に設置されます。

コンポーネント

  • 「Use Gravity」にチェックが入っている可能性があります。
    オブジェクトのInspectorウィンドウでRigidbodyコンポーネントを見つけ、「Use Gravity」のチェックを外してください。これにより、重力の影響を受けることなく空中に停止することができます。

  • 「PlayOnAwake」にチェックがついていることが原因です。
    オブジェクトのInspectorウィンドウでAudio Sourceコンポーネントを見つけ、「PlayOnAwake」のチェックを外してください。

C#

  • 型はデータの種類を表します。
    例えば、整数、小数を含む数字、文字列、他にもたくさんあります。C#(Unityで使われるプログラミング言語)では、以下のような基本的な型があります。
    int (整数)、float (浮動小数点数)、bool (真偽値:trueまたはfalse)、string (文字列)

  • 変数はデータを格納するためのコンテナのようなものです。
    変数には名前があり、その名前を使ってデータにアクセスします。変数は特定の「型」を持ち、その型のデータのみを格納できます。
    例えば:
    int myNumber = 5;
    string myName = “Alice”;
    myNumber は整数5を、myName は文字列 Aliceを格納しています。

  • メソッドはクラス内で定義される機能の単位です。
    特定の動作や計算を実行するためのものです。必要に応じてデータを受け取り(パラメータ)、データを返すことができます。
    例えば:

    public int AddNumbers(int number1, int number2) {
    return number1 + number2;
    }
    この例のAddNumbersメソッドは2つの変数(number1、number2)を受け取り、それらを加算して結果を返すメソッドです。

  • [SerializeField] は、そのフィールドがシリアライズ可能であることを表す属性です。
    C#におけるシリアライズとは、オブジェクトをバイト列に変換する操作を意味します。
    「シリアル化」や「直列化」などと表記されることもあります。

  • Dlegate処理とはメソッドを変数のように扱うことができる型です。他のメソッドに渡したり、イベントハンドラとして使用したりすることができます。
    イベント駆動型や非同期処理、コールバック関数などの実装に使用します。
    こちらのサイトで使用方法を確認できます:https://qiita.com/ysn/items/71fe3f332ea9a3114d36

  • 次の例文ではMyDelegateというDelegate型を定義し、MethodAというメソッドをDelegateインスタンスdelに関連付けています。delを呼び出すことで、MethodAが実行されます。

  • Eventを登録するためにはAddListenerで追加する必要があります。次の例文ではボタンがクリックされたらTaskOnClickメソッドをリスナーとして追加しているのでイベントが呼び出されています。

  • FixedUpdateメソッドは一定の間隔ごと(デフォルトでは0.02秒)で呼び出され、物理計算や固定フレームレートの更新処理に使用されます。Rigidbodyに力を加えるような処理は、FixedUpdate内で行う必要があります。またプレイヤーのキー入力が伴う処理にも適しています。

  • Unityエディタのメニューから「Edit」> 「Project Settings…」 > 「Time」 タブを開きます。そこにある 「Fixed Timestep」 の値を変更することで、FixedUpdateの呼び出し間隔を調整できます。

  • LateUpdateはUpdateメソッドがすべて実行された後に呼び出されるイベント関数です。カメラの追従やほかのオブジェクトの動きに依存する処理の実装に使用します。次のコードはカメラがプレイヤーを追いかける実装の例です。

アセット・アセットストア

  • Webサイトにてアセットを購入したにも関わらず、アセットがUnityのPackageManagerで表示されない原因は次の可能性があります。

    1:PackageManagerの表示項目が”MyAssets”に指定されていない。画面左上にあるPackagesの項目をMyAssetsに設定してください。

    2:UnityでログインしているアカウントとWebサイトでログインしたアカウントが違う。UnityHubのアカウント画面で登録されているアカウント情報とWebサイトでログインしたアカウントが同一か確認してください。

    3:それでも上手くいかない場合、Unityのログイン認証に問題が発生しています。一度Unityを閉じ、UnityHubでログインしているアカウントをログアウトし、その後再度ログインを行ってください。ログイン処理が完了後、UnityHubよりUnityProjectを再度開いてみてください。

    4:上記でも上手くいかない場合、Unityのコンソール表示を確認し、Unityに赤文字でエラーが出ていないか確認してください。Clearボタンを押しても赤文字のエラーが消えない場合はコンパイルエラーの可能性があります。直せないエラーの場合は再度UnityProjectを新規で作成してください。

=VRに関する質問=


VR開発環境構築

  • UnityにAndroidSDKをインストールする方法は下記手順で行えます。
    1:UnityHubを開く。
    2:画面左にあるInstallボタンを押す。
    3:インストールされているUnityEditorが表示されるので、AndroidSDKを追加したいUnityバージョンの歯車マークのアイコンをクリックする。
    4:AddModuleのボタンが表示されるのでそこをクリックする。
    5:Platformの項目から「Android Build Support」をチェックする。
    6:Installボタンを押す。


  • Metaの開発者ページでOrganizationを登録し、開発者登録を完了したにも関わらず開発者項目が表示されない理由としてアカウントの個人情報の登録漏れの可能性があります。
    特にアカウントに支払い方法の登録を行っていないとVRヘッドセットの開発者登録をONにすることが出来ません。アカウント登録において名前、住所、メールアドレス等もきちんと登録されているかをご確認ください。


  • 1:Unity EditorのAssetsフォルダ内に画像データをドラッグ&ドロップしてください。

    2:Unityに入れた画像をクリックしてInspectorを開いて「Texture Type」>「Default」になっているので「Sprite(2D and UI)」に変更してください。

    3:一番下にある「Apply」ボタンをクリックすると、Unity上で表示できる画像データに変換されます。

    4:次に、ヒエラルキーでCanvasオブジェクトに付いている子オブジェクトのImageをクリックします。

    5:ImageのInspectorを見ると、「Source Image」の項目があるので、先ほど変換した画像データをドラッグ&ドロップしてください。すると、シーン上に画像が表示されます。

  • https://vracademy.jp/blog/meshbaker-for-unity/ を表示してください。
    上記ページにてMesh Bakerを用いてマテリアルをアトラス化する処理軽減方法について解説しています。

  • 1.Unityの新規ProjectはURP テンプレートで作成します

    XRアプリ開発のためのUnityProjectは現在URPの利用が推奨されています。

    新規プロジェクトを作成する場合は右記赤枠の「Univeral 3D」を選択して新規プロジェクトを作成してください。
    URPの概要:https://docs.unity3d.com/ja/Packages/com.unity.render-pipelines.universal@14.0/manual/index.html

    2.Unityを開き、Build Settingsを開いてプラットフォームをAndroidに選択してSwitch Platformをクリックしてください。
    VR開発では最初にこのプラットフォームを変更することを忘れないでください。

    3.Meta XR All-in-one SDKの追加

    下記URLにアクセスし、MetaQuest開発SDKをUnityProjectに追加します。
    アセットストアで「Meta XR All-in-one SDK」を検索し、マイアセットに追加をしてUnityに戻ってください。

    https://assetstore.unity.com/


    ここまでできたら~セットアップ②~に進んでください。

  • 1:UnityプロジェクトにSDKを追加する

    購入完了後、Unityに戻り、「Window」 > 「PackageManager」 > 「Meta XR All-in-one SDK」を開いて右上の「Install」をクリックしてアセットをインストールします

    2:Meta XRのSetupToolを選択

    Meta XR SDKには複雑なビルド設定を自動で設定する機能があります

    Project Settingsを開き、「Meta XR」を選択します



    3.CheckListのOutStandingIssuesをすべてFixする

    VRアプリをビルドするためには赤Issueで表示されている内容は必ず修正する必要があります

    FixAllをクリックして赤Issueをすべてクリアにします



    4.CheckListのRecomended ItemsをFixする

    次は修正が推奨される項目です。初めはすべて修正でOKですが、今後開発内容によっては一部推奨を無視した設定での開発もあります

    今回は「Apply All」ですべてを修正します



    設定後、下図のようになっていればOKです。


    VRアプリを開発するためにはプロジェクト作成毎に上記設定が必要です

    開発環境のセットアップは2024年04月現在の設定手順であり、機能アップデートでセットアップの手順は今後変更される場合があります

  • 残念ながらUnityでは、ゲームを実行(プレイモード)中に行われた編集作業は、実行を停止すると失われます。これを元に戻す方法はありません。
    これは意図しない変更を防ぐためにUnityではデフォルトで設計されています。ですが今後同じ失敗をしないようにUnity実行中の色を設定してミスを防ぐ方法はあります。
    【Unity 実行(プレイモード)中の画面の色を変える方法】
    1:[Edit] > [Preferences] を開きます
    2:[Colors] > [Playmode tint] から色を変更します。
    3:プレイモード中に変更した色に変わります。
    こうすることで視覚的に実行中であると分かりやすくなります。

  • Unityにダウンロードしたアセットを探す方法はProjectフォルダ内の【検索機能】を使うと便利です。
    ダウンロードしたアセットによっては「Assetsフォルダ」ではなく「Packageフォルダ」内に格納されることもあるので、検索機能を「Search:」 >「All」に変更すると見つけることができます。

  • 1:Unityエディタの上部にあるメニューバーから「Edit」>「Project Settings」>「Tags and Layers」を選択します。ここで新しいレイヤーを追加してください。

    2:シーン内のオブジェクトを選択し、Inspectorウィンドウで「Layer」ドロップダウンメニューから追加したレイヤーを割り当てます。

    3:「Edit」>「Project Settings」>「Physics」を開きます。「Layer Collision Matrix」から対象のチェックボックスを外すと、重なるレイヤー同士が衝突するかを設定できます。

    【覚えておきたい】

    チェックを外すことで計算を減らしパフォーマンスを向上させることができます。またヒエラルキーでオブジェクトを選択し、インスペクターの「Layer」>「Add Layer…」を選択してもレイヤーを追加できます。

  • Unity上でエラーが無ければQuest上で問題があるかもしれません。以下の方法を試してください。
    【原因特定方法】
    1.QuestでストアからOVR Metrics Toolをインストールして立ち上げて、「Enable Persistent Overlay」を有効にしてください。

    2.FPSの情報がオーバーレイ表示されるので、その状態のままアプリをAPKを実行。

    3.オーバーレイに表示されているグラフを見ると、どのシーンでFPSが下がるか確認できます。今回のケースでいうと、最初はアプリは動くが途中でオブジェクトのCGが重すぎて負荷がかかりゲームが止まった可能性があります。ビルド前にUnity上でCG負荷の軽減処理(リダクション)を行いましょう。

    Mesh Optimizerなどのツールを使用してリダクションをしてからビルドすると解決することもあります。

    【Mesh Optimizerの使い方】
    https://styly.cc/ja/tips/assets%CC%B2-unity-3dcg-mesh-polygon/


  • OVRCameraRigのOVR Managerの設定から「Hand Tracking Support」を【Cpntrollers And Hands】に設定して再度再生してください。

  • 大丈夫です。VR開発環境構築にMeta Questを使用している場合はProjectを開いて最初にAndroid設定に変更してください。
    理由としてはMeta Quest(以前はOculus Quest)は、AndroidベースのVRヘッドセットであるため、UnityプロジェクトをMeta Quest用にビルドする際にはAndroidプラットフォームに設定する必要があります。Android環境にするとMeta Questデバイスでアプリケーションをテストし、デバッグすることができます。
    この変換は時間のかかる処理であり、プロジェクトが大きくなるにつれ肥大します。なので開発を始める前にモードを変更することで不要な再変換処理を抑えることができます

  • 「XR-PluginManagement」>「Oculus」>「StereoRendering」>「MultiView」に変更してください。これだけでCGのレンダリングパフォーマンスが約2倍上がります。
    現在MetaはMultiViewの設定を推奨しており、設定するだけでパフォーマンスがぐっと軽くなります。
    最後にLow Overhead ModeをONにします。

    *注意事項*
    MultiViewは特殊な描画方式のため、アセットストアで購入した一部のCG(シェーダ)やエフェクトが機能せずに映像がグチャグチャになってしまう可能性があります。MultiViewにして映像がおかしくなってしまった場合は素直に元に戻しましょう

  • 最初にUnity Editerを立ち上げる前にAndroidがインストールされているか確認してください

    MetaQuestの中身(OS)はAndroidで構成されています

    Androidがない場合は画像の指示に従ってモジュールを追加してください

    インストールしたらUnityを開き、Build Settingsを開いてプラットフォームをAndroidに選択してSwitch Platformをクリックしてください

    VR開発では最初にプラットフォームを変更することを忘れないでください

  • まずAndroidにSwitch Platformをしているか確認してください。

    場所は「File」 > 「Build Settings…」 でBuild Settings画面を開き、PlatformをWindows,Mac,LinuxからAndroidを選択し、右下のSwitch Platformを選択してください。VRアプリ開発では必ず最初に行ってください。

    Androidに変更できていたら、次に「Edit」>「Project Settings」>「Meta XR」を選択してProject Setup Toolを開いてください。

    Androidが選択されているかを確認後、「Fix All」をクリックしてください。

    これをすることでUnityがProject Settingsを推奨設定に自動的におこなってくれます。すべて緑色にして再度エディタを再生してください。

  • OVRPlayerControllerにはコライダーが設定されているため、他のコライダーを持つオブジェクトと衝突します。

    これを解決する方法として、

    1:右上のGizmoをOnにした状態でOVRPlayerControllerを選択してください。するとPlayerControllerのコライダーが視認できます。

    2:この状態でインスペクターからCharacterControllerのRadiusの値を0.5から0.1にすると、接触するコライダーの範囲を変更できるため、オブジェクトに近づくことができます。

    3:またもう一つの解決方法として前述で記載した「Unityエディタを再生するとオブジェクト同士が衝突してモデルが崩れてしまいます」をご確認ください。

アプリビルド

  • ①アプリ(APKファイル)をビルドするにはBuildSettingsを開き、現在のシーンをScene in Buildに追加してください



    ②Buildボタンを押すと保存先フォルダが出るので、名前と保存場所を指定して保存してください

    ③APKファイルの保存場所とAPKファイルの名前を決めます

    ④保存する場所と名前を決定したら保存ボタンをおします

  • 「Build Settings」>「Build」ではなく、となりの「Build And Run」を押すことでAPKの作成からインストールまで行ってくれます。

    この方法でサイドクエストを使わずに直接APKファイルをインストールすることが可能です。この方法は通常の検証時にオススメです。


グラフィクス

  • Unityでは3Dモデルの裏面は描画されないよう設定(カリング)されています。

    光の貫通を防ぐ方法として、天井と壁を選択し、「Cast Shadows」>「Two-Sided」に変更します。

    こうすることで表裏の面で影の投影は計算されるようになり、光が貫通しなくなります。

  • 【VRアプリを開発する場合、パフォーマンスを定期的にチェックしてCGモデルを描画する頂点数を減らして処理を軽減する「リダクション」が必須です】

    CGパフォーマンスの確認方法は以下の順に行います

    1:UnityエディタのGame画面にStatsという項目があります。ここをクリックするとStatisticsが表示され、Unityを実行したときのパフォーマンスを表示してくれます

    2:頂点数=Vertsです。Unity実行中の数値を確認します

    3:Quest2での理想値は300kです。大きすぎた場合はリダクションをしてください。

    この数値は現在描画している範囲を表しています。カメラの見える範囲が変わると数値も変わるので注意してください。

入力処理(コントローラー・ハンドトラッキング)

  • シーン上に配置したControllerの設定を変更する必要があります。ヒエラルキーで「Camera Rig」>「TrackingSpace」>「LeftHandAnchor」>「LeftControllerAnchor」>「[BuildingBlock] Controller Tracking Left」の順番に選択してください。次にインスペクター上でOVR Controller HelperのControllerタブをクリックしてボタンを変更してください。それぞれのボタン配置は画像で確認してください。



  • OVRPlayerControllerを検索してヒエラルキーにドラッグアンドドロップして、Camera Rigを子オブジェクトにしてください

    OVRPlayerControllerのOVRCameraRigは削除してください。

    コントローラのスティック入力で移動が可能になります。OVRPlayerControllerにはRigidBodyがついてるので、必ずPlaneなど地面を設置してください。

Meta Quest 操作

  • 右コントローラーにあるクエストボタン(∞に似たマーク)を長押しすると、正面の位置を調整することができます。

  • 【最初に確認!】QuestとPCが同じWi-fi環境に接続している/接続ケーブルはUSB 3.0を使用している
    1:Meta Quest LinkアプリをPCにインストールしてください。
    インストールはこちら
    https://www.meta.com/ja-jp/help/quest/articles/headsets-and-accessories/oculus-link/set-up-link/

    アプリを立ち上げたら「設定」>「ベータ」>「開発者ランタイム機能」をオンにしてください。

    2:オンにしたら左の欄から「デバイス」を押して、お持ちのQuestを追加してください。
    3:Meta Questを起動しQuestの「設定」>「デバイス」>「開発者モード」をオンにしてください。
    4:PCとQuestを一度再起動して再度接続してください。

=VRアカデミー学校説明会=