2

ディレクトリからいくつかの外部画像をロードする必要がある Unity で webGL プロジェクトを開発しています。エディターではすべて正常に実行されますが、ビルドすると、Web コンソールで Directory Not Found 例外がスローされます。Assets/StreamingAssets フォルダーに画像を配置しています。これは、ビルドされたプロジェクトの StreamingAssets フォルダーになります (ルートで、index.html と同じ)。画像はそこにありますが、ブラウザはそのディレクトリを見つけることができないとまだ不平を言っています。(自分のコンピューターで開いています。実行中のWebサーバーはありません)

私は非常に明白な何かを見逃していると思いますが、助けを借りることができるようです.1週間前にユニティを学び始めたばかりで、C#やJavaScriptはそれほど得意ではありません. ...) これは何らかの形で JavaScript のセキュリティ問題に関連していますか?

Unity WebGLで画像を読み取る方法(書き込みを行う必要はありません)について、誰かが私を正しい方向に向けてください。

string appPath = Application.dataPath;
string[] filePaths = Directory.GetFiles(appPath, "*.jpg");

unity3d.com in webGL によると、スレッドとリフレクションを除くすべてがサポートされているため、IO が機能するはずです。

私は少し回避していましたが、今は画像のパスを含むテキスト ファイルを読み込もうとしています (';' で区切られています):

    TextAsset ta = Resources.Load<TextAsset>("texManifest");
    string[] lines = ta.text.Split(';');

次に、すべての行を適切なパスに変換し、リストに追加します。

    string temp = Application.streamingAssetsPath + "/textures/" + s;
    filePaths.Add(temp);

Debug.Log は、次のようになっていることを示しています。

ファイル://////Downloads/FurnitureDresser/build/StreamingAssets/textures/79.jpg

スラッシュ以外は問題ないようです (私には少し奇妙に見えます)。

最後にテクスチャを作成します。

    WWW www = new WWW("file://" + filePaths[i]);
    yield return www;
    Texture2D new_texture = new Texture2D(120, 80);
    www.LoadImageIntoTexture(new_texture);

そして、この最後の部分について (不確か: webgl プロジェクトは簡単にデバッグできないようです)、次のように表示されます: NS_ERROR_DOM_BAD_URI: 制限付き URI へのアクセスが拒否されました

誰かが何が起こっているのか教えてもらえますか? そして何よりも、実行時に画像をロードできるディレクトリを作成するソリューションには何が適切でしょうか?

4

2 に答える 2

-1

画像をResourcesフォルダーに入れ、 Resources.Loadを使用してファイルを開いて使用します。

例えば:

Texture2D texture = Resources.Load("images/Texture") as Texture2D;
if (texture != null) 
{
    GetComponent<Renderer>().material.mainTexture = texture;
}

ディレクトリ リストとファイル API は、webgl ビルドでは使用できません。

基本的に、低レベルの IO 操作はサポートされていません。

于 2016-04-10T14:41:51.820 に答える