【Unity】Resourcesフォルダの使い方と非推奨な理由

当サイトで紹介する商品・サービス等の外部リンクは、アフィリエイト広告を含む場合があります。
スポンサーリンク

Unityを使用していると、画像や音声、モデルなどのアセットを管理する際に、
Resourcesフォルダが便利です。

Resourcesフォルダは比較的簡単に使える方法のひとつですが、公式では非推奨とされています。

本記事では、Resourcesフォルダの基本的な使い方と、それが非推奨とされる理由、
さらに代替手段について解説します。

本記事は次の人におすすめ
  • Unityで複数のアセットを効率的に管理したい方
  • Resourcesフォルダの使い方に疑問を持っているUnityユーザー
  • 非推奨な方法を知りたい開発者
  • パフォーマンスに影響を与えないアセット管理方法を知りたい方
  • スクリプトでアセットを動的に扱いたい方
スポンサーリンク

Resourcesフォルダとは?

Resourcesフォルダは、Unityのプロジェクト内で特別な役割を持つフォルダです。
プロジェクト内の任意の場所に作成することができ、このフォルダに配置されたすべてのアセットは、
ビルド時に自動的に含まれ、動的にロードすることができます。
この仕組みを活用することで、スクリプトからアセットを簡単に呼び出すことが可能です。

Resourcesフォルダで、できること
  • スクリプトでアセットを動的にロードする
  • ゲーム内で必要に応じてリソースを取得し、メモリを効率的に使用する
  • ファイルパスを指定せずに、特定の条件に応じたアセットの呼び出し
  • プレハブ、画像、サウンド、テキストデータなど様々なアセットの取り扱いが容易
  • 迅速なプロトタイピングやデバッグ用途での簡便なリソース管理

csvの保存も可能で、テキストを出力したり、画像や音声をパス管理したりできます。

Resourcesフォルダで、csvをロードする方法を紹介しています。
Resourcesフォルダで、パス(Path)から音声と画像を出力します。

素材を簡単に扱えることの他に、Resourcesフォルダを使うメリットは様々です。

Resourcesフォルダを使うメリット
  • シンプルな運用: 特別な設定が不要で、すぐにアセットをロードできる
  • 汎用性: アセットの種類や配置場所に関わらず、動的にアクセス可能
  • 動的ロード: 必要なタイミングでアセットをメモリにロードすることで、初期のロード時間を短縮できる
  • テスト・デバッグのしやすさ: 開発中に素材の変更やテストを簡単に行うことができる
  • プロトタイピング: 初期段階のプロジェクトで手軽にリソースを管理できるため、開発速度が向上

Resourcesフォルダが非推奨な理由

Resourcesフォルダの利用には便利な面が多い反面、デメリットが存在し、
Unity公式ではこのフォルダの使用を推奨していません

公式サイト:「Resources フォルダー – Unity マニュアル

まず、ビルドサイズの増加が挙げられます。
Resourcesフォルダ内のすべてのアセットは、使用されていなくてもビルドに含まれるため、
ビルドサイズが大きくなりがちになります。

メモリ管理が困難で、 一度ロードされたアセットは、
メモリから明示的に解放されるまで保持され続けるため、メモリの使用効率が悪化します。

参照の追跡が困難なため、Resourcesフォルダ内のアセットはコードで動的に参照されて、
どのアセットがどこで使われているかが追跡しにくく、バグの原因になりやすいです。

ロード時間の増加によりビルド時にすべてのResourcesフォルダのアセットが含まれるため、
アセットの数が多くなるとロード時間が増加します。

管理の複雑さも関連します。プロジェクトが大規模になると、アセット管理が難しくなり、
予期せぬバグやメモリリークが発生する可能性があります。

代わりとなる素材やアセット管理

このように、大規模なプロジェクトの場合、Resourcesフォルダを避ける必要があります。
Resourcesフォルダの代替案を検討することが推奨されています。

代わりになる手段
  • アドレッサブルシステム(Addressable Asset System): アセットの動的ロードと管理をより効率的に行うための仕組み。メモリやロードパフォーマンスの最適化が可能
  • AssetBundles: 必要なアセットだけを個別にビルドして管理できるため、ビルドサイズの削減や動的なアセット管理が容易になる
  • SceneやPrefabの階層管理: アセットをPrefabとしてまとめ、使いやすい階層で整理することで、動的にアセットをロードする必要がなくなる

Pythonの学習進め方

Pythonでできることは多岐に渡ります。

Pythonでできること
  • 機械学習・人工知能
  • データ解析・統計分析
  • ファイル操作・システム管理
  • GUIアプリ開発

Pythonは強力で柔軟なプログラミング言語ですが、常に情報がアップデートされるので、
新しいライブラリやフレームワークを独学で学び続けることは困難です。

Udemyは動画で目的に応じた講座を受講できるのでレベルを合わせて学習できます。
購入した講座は再生・停止・スキップなどが可能なオンデマンド形式なので、
専門的な内容を自分のペースで独学できます。

Udemyの特徴
  • プロのエンジニアによる講習が受けられる
  • 自分のペースで学習を進められる
  • オンデマンド形式だから何度でも視聴可能
  • 不満足なコースは視聴していても返金可能返金ポリシー

Pythonでデータサイエンスや人工知能、GUIを学びたい人はUdemy学習を取り入れましょう。
数多くある講座の中から特におすすめな講座を5つ紹介します。

ビックセール開催中(10月11日まで)
対象のコースが1500円から(最大95%OFF)

多彩な講座から自分に合った講座を探そう!

最大94%OFF

終了まで

時間

Pythonをインストールから環境設定、基本文法が学習できる。さらに、モジュールの使い方やファイル操作の他に暗号化、並列化、インフラ自動化、キューイングシステム、非同期処理についても学べます。

Pythonの基礎を押さえつつ、人口知能やニューラルネットワーク、機械学習を取り扱う。機械学習ライブラリで文字認識や株価分析などを行う。

データサイエンティストになるために必要なツールについて学ぶことができる。統計分析、NumpyやPandasなどを使ったPythonのプログラミング、機械学習の実装、ディープラーニングの実装を学習できる。

PythonでGUIを作成する方法を取り扱う。Tkinterの発展的な操作まで学習できる。翻訳アプリ、家計簿アプリ、電卓アプリ、音楽再生アプリなど作成して、exeファイル化する。

スクリプトで扱う方法

スクリプトでアセットを扱う場合、アドレッサブルやAssetBundlesを使うことで、
動的にアセットをロードしつつ、Resourcesフォルダのデメリットを回避することができます。

アドレッサブルシステムを使用すれば、特定のアセットを簡単に呼び出すことが可能です。

インストールには、「package Maneger」を使用します。

using UnityEngine.AddressableAssets;
using UnityEngine.ResourceManagement.AsyncOperations;

public class AssetLoader : MonoBehaviour
{
    void Start()
    {
        Addressables.LoadAssetAsync<GameObject>("MyPrefabKey").Completed += OnLoadDone;
    }

    void OnLoadDone(AsyncOperationHandle<GameObject> obj)
    {
        if (obj.Status == AsyncOperationStatus.Succeeded)
        {
            GameObject myPrefab = obj.Result;
            Instantiate(myPrefab);
        }
    }
}

まとめ

UnityのResourcesフォルダは、手軽にアセットを動的に管理できる便利な機能ですが、非推奨とされる理由も多く存在します。主な問題は、ビルドサイズの増加やメモリ管理の難しさ、アセット参照の追跡が困難になることなどです。

これらのデメリットを避け、プロジェクトの効率とパフォーマンスを最適化するためには、
代替手段として「アドレッサブルシステム」や「AssetBundles」を利用することが推奨されます。

特に、アドレッサブルシステムを活用すれば、スクリプトを通じて動的にアセットを管理しつつ、Resourcesフォルダの持つ問題点を回避できます。

これにより、プロジェクトの規模が大きくなってもパフォーマンスやメモリ効率を保ちながら開発を進めることが可能です。

この記事を書いた人

プロフィール

アリッシア

                 

大学4年間で何か胸を張れるスキルを身に着けたくて当サイト運営を始めました。
現在、大学院に進学するか就職するか迷いながら勉強しています。
詳しいプロフィールはこちら

Contact icon

contact

X icon

X

Instagram icon

Instagram

Note icon

Note

スポンサーリンク
Unity
フォローする
タイトルとURLをコピーしました