web-dev-qa-db-ja.com

UnityでResourcesフォルダーを使用する

.txtファイルを参照する必要があるHoloLensプロジェクトを開発しています。 Unityの 'Resources'フォルダーにファイルを保存し、(Unity経由で実行した場合)完全に正常に機能させています。

string basePath = Application.dataPath;
string metadataPath = String.Format(@"\Resources\...\metadata.txt", list);

// If metadata exists, set title and introduction strings.
if (File.Exists(basePath + metadataPath))
{
      using (StreamReader sr = new StreamReader(new FileStream(basePath + metadataPath, FileMode.Open)))
    {
         ...
    }
}

ただし、HoloLens展開用のプログラムをビルドすると、コードを実行できますが、機能しません。どのリソースも表示されず、HoloLens Visual Studioソリューション(Unityで[ビルド]を選択して作成された)を調べると、リソースまたはアセットフォルダーも表示されません。私は何か悪いことをしているのか、そのようなリソースに対処するための特別な方法があったのかと思っています。

画像と音声ファイルも...

foreach (string str in im)
{
      spriteList.Add(Resources.Load<Sprite>(str));
}

文字列 'str'は有効です。 Unityで完全に正常に動作します。ただし、繰り返しになりますが、HoloLensを実行しても何も読み込まれません。

13
whycodingsohard

StreamReaderまたはFileクラスを使用してResourcesディレクトリを読み取ることはできません。 _Resources.Load_ を使用する必要があります。

1パスは、プロジェクトのAssetsフォルダー内のすべてのResourcesフォルダーからの相対パスです。

2。Donotには、.txt。png。mp3をパスパラメータに含めます。

3Resourcesフォルダー内に別のフォルダーがある場合は、バックスラッシュの代わりにスラッシュを使用します。バックスラッシュは機能しません。

テキストファイル

_TextAsset txtAsset = (TextAsset)Resources.Load("textfile", typeof(TextAsset));
string tileFile = txtAsset.text;
_

サポートされているTextAsset形式:

txt。html。htm。xml 。bytes。json。csv.yaml。fnt

サウンドファイル

_AudioClip audio = Resources.Load("soundFile", typeof(AudioClip)) as AudioClip;
_

画像ファイル

_Texture2D texture = Resources.Load("textureFile", typeof(Texture2D)) as Texture2D;
_

スプライト-シングル

Texture TypeSprite(2D and UI)に設定された画像と

Sprite ModeSingleに設定された画像。

_Sprite sprite = Resources.Load("spriteFile", typeof(Sprite)) as Sprite;
_

スプライト-複数

Texture TypeSprite(2D and UI)に設定された画像と

Sprite ModeMultipleに設定された画像。

_Sprite[] Sprite = Resources.LoadAll<Sprite>("spriteFile") as Sprite[];
_

ビデオファイル(Unity> = 5.6)

_VideoClip video = Resources.Load("videoFile", typeof(VideoClip)) as VideoClip;
_

GameObject Prefab

_GameObject prefab = Resources.Load("shipPrefab", typeof(GameObject)) as GameObject;
_

3Dメッシュ(FBXファイルなど)

_Mesh model = Resources.Load("yourModelFileName", typeof(Mesh)) as Mesh;
_

3Dメッシュ(GameObject Prefabから)

_MeshFilter modelFromGameObject = Resources.Load("yourGameObject", typeof(MeshFilter)) as MeshFilter;
Mesh loadedMesh = modelFromGameObject.sharedMesh; //Or   design.mesh
_

3Dモデル(ゲームオブジェクトとして)

_GameObject loadedObj = Resources.Load("yourGameObject") as GameObject;
//MeshFilter meshFilter = loadedObj.GetComponent<MeshFilter>();
//Mesh loadedMesh = meshFilter.sharedMesh;

GameObject object1 = Instantiate(loadedObj) as GameObject;
_

サブフォルダ内のファイルへのアクセス

たとえば、shoot.mp3ファイルが「Sound」というサブフォルダにあり、 Resourcesフォルダーでは、スラッシュを使用します。

_AudioClip audio = Resources.Load("Sound/shoot", typeof(AudioClip)) as AudioClip;
_

非同期読み込み

_IEnumerator loadFromResourcesFolder()
{
    //Request data to be loaded
    ResourceRequest loadAsync = Resources.LoadAsync("shipPrefab", typeof(GameObject));

    //Wait till we are done loading
    while (!loadAsync.isDone)
    {
        Debug.Log("Load Progress: " + loadAsync.progress);
        yield return null;
    }

    //Get the loaded data
    GameObject prefab = loadAsync.asset as GameObject;
}
_

使用するにはStartCoroutine(loadFromResourcesFolder());

26
Programmer