コガネブログ

平日更新を目標に Unity や C#、Visual Studio、ReSharper などのゲーム開発アレコレを書いていきます

【Unity】StreamingAssets 内のアセットは無視フォルダに格納するとインポートをスキップできる

検証内容

f:id:baba_s:20220112214521p:plain

たとえば StreamingAssets フォルダに

f:id:baba_s:20220112214523p:plain

大量のアセットを格納すると

f:id:baba_s:20220112215412p:plain

インポートに長い時間がかかってしまいます

ゲームをビルドする時にアセットバンドルを
StreamingAssets にコピーしてからビルドする場合、
ゲームのビルドのたびに長いインポート処理が走ってしまいます

キャッシュサーバも使用していると
キャッシュサーバとの通信も発生して時間がさらにかかったりします

f:id:baba_s:20220112214526p:plain

そこで、StreamingAssets フォルダに以下のような無視フォルダを作成して
その中にアセットを格納してみます

  • 隠しフォルダ
  • 「.」で始まるフォルダ
  • 「~」で終わるフォルダ
  • 「cvs」という名前のフォルダ

上記の例では「.Invisible」という無視フォルダ内に格納しています

f:id:baba_s:20220112214528p:plain

すると、Unity でそのフォルダは認識されなくなるため
StreamingAssets 内のアセットのインポートがスキップされるようになります

using System.IO;
using UnityEngine;
using UnityEngine.UI;

public sealed class Example : MonoBehaviour
{
    public Text m_text;

    private void Start()
    {
        var path = $"{Application.streamingAssetsPath}/.Invisible/0001.txt";
        var text = File.ReadAllText( path );

        m_text.text = text;
    }
}

この状態でランタイムで StreamingAssets 内のアセットを読み込めるか試してみると

f:id:baba_s:20220112215153p:plain

正常に読み込めることが確認できます

関連記事