2017-03-06 8 views
1

私は、静的フォルダからすべてのメディアファイルを読み込み、すべてのメディア(画像の静的な長さ、ビデオの長さのビデオ)を再生するUnityでメディアプレーヤーを作成しようとしています。まずはイメージだけで作業するようにしています。フォルダからメディアを読み込んでRawImageに表示する

私はUnityで非常に新しく、C#でうまくいかない。すべてのメディアファイルソース(イメージ)を配列に取得できますが、次にこれらをRawImageコンポーネントのテクスチャと場所に変換する必要があります。私はこの部分に立ち往生しています。

私はsrc(例えばC:\ medias \ img1.jpg)を持っていれば、これをRawImageコンポーネントのイメージとしてどのように置くことができますか?

私のコード - >

using System.Collections; 
using System.Collections.Generic; 
using UnityEngine; 
using UnityEngine.UI; 
using UnityEditor; 
using System; 
using System.IO; 
using System.Linq; 

public class Player : MonoBehaviour { 

    // Use this for initialization 
    void Start() { 
     DirectoryInfo dir = new DirectoryInfo(@"C:\medias"); 
     string[] extensions = new[] { ".jpg", ".JPG", ".jpeg", ".JPEG", ".png", ".PNG", ".ogg", ".OGG" }; 
     FileInfo[] info = dir.GetFiles().Where(f => extensions.Contains(f.Extension.ToLower())).ToArray(); 
     Debug.Log (info[0]); 
     // Logs C:\medias\img1.jpg 
    } 

    // Update is called once per frame 
    void Update() { 

    } 
} 

感謝:)

答えて

3

まず私はそれだけの画像で動作するように取得しようとしています。

私はUnityで非常に新しく、C#でうまくいかない。 のメディアファイルソース(イメージ)を配列に取得できますが、次に をRawImageコンポーネントのテクスチャと場所に変換する必要があります。私は とこの部分がついています。

あなたはTexture2D.LoadImage機能を探しています。画像のバイトをTexture2Dに変換し、そのTexture2DをRawImageに割り当てることができます。

動画でこれを行う方法について新しい質問があります。それははるかに複雑です。

public RawImage rawImage; 
Texture2D[] textures = null; 

//Search for files 
DirectoryInfo dir = new DirectoryInfo(@"C:\medias"); 
string[] extensions = new[] { ".jpg", ".JPG", ".jpeg", ".JPEG", ".png", ".PNG", ".ogg", ".OGG" }; 
FileInfo[] info = dir.GetFiles().Where(f => extensions.Contains(f.Extension.ToLower())).ToArray(); 

//Init Array 
textures = new Texture2D[info.Length]; 


for (int i = 0; i < info.Length; i++) 
{ 
    MemoryStream dest = new MemoryStream(); 

    //Read from each Image File 
    using (Stream source = info[i].OpenRead()) 
    { 
     byte[] buffer = new byte[2048]; 
     int bytesRead; 
     while ((bytesRead = source.Read(buffer, 0, buffer.Length)) > 0) 
     { 
      dest.Write(buffer, 0, bytesRead); 
     } 
    } 

    byte[] imageBytes = dest.ToArray(); 

    //Create new Texture2D 
    Texture2D tempTexture = new Texture2D(2, 2); 

    //Load the Image Byte to Texture2D 
    tempTexture.LoadImage(imageBytes); 

    //Put the Texture2D to the Array 
    textures[i] = tempTexture; 
} 

//Load to Rawmage? 
rawImage.texture = textures[0]; 
関連する問題