C# Unity从文件夹中加载媒体并显示在RawImage上

C# Unity从文件夹中加载媒体并显示在RawImage上,c#,image,unity3d,resources,media-player,C#,Image,Unity3d,Resources,Media Player,我试图在Unity中创建一个媒体播放器,从静态文件夹读取所有媒体文件,并通过所有媒体播放(图像静态持续时间,视频长度)。首先,我试图让它只与图像一起工作 我对Unity很陌生,对C#不太在行。我可以将所有媒体文件源(图像)放到一个数组中,但接下来我需要将它们转换为纹理,并放置在RawImage组件上。我被这部分卡住了 如果我有src(例如C:\medias\img1.jpg),那么我如何将其作为图像放置在RawImage组件上 我的代码-> using System.Collections; u

我试图在Unity中创建一个媒体播放器,从静态文件夹读取所有媒体文件,并通过所有媒体播放(图像静态持续时间,视频长度)。首先,我试图让它只与图像一起工作

我对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 () {

    }
}
谢谢:)

首先,我试图让它只与图像一起工作

我对Unity很陌生,对C#不太在行。我能得到所有的 媒体文件源(图像)到阵列,但接下来我需要转换 将它们添加到纹理并放置在RawImage组件上。我受够了 这部分

您正在寻找函数。它将图像字节转换为Texture2D,然后您可以将该Texture2D分配给rawmimage

你必须问一个新问题,关于如何在视频中做到这一点。那要复杂得多

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];
publicrawimage;
Texture2D[]纹理=null;
//搜索文件
DirectoryInfo dir=新的DirectoryInfo(@“C:\medias”);
string[]extensions=new[]{.jpg“,.jpg“,.jpeg“,.jpeg“,.jpeg“,.png“,.png“,.png“,.ogg“,.ogg”};
FileInfo[]info=dir.GetFiles().Where(f=>extensions.Contains(f.Extension.ToLower()).ToArray();
//初始化数组
纹理=新纹理2d[信息长度];
对于(int i=0;i0)
{
目的写入(缓冲区,0,字节读取);
}
}
byte[]imageBytes=dest.ToArray();
//创建新的纹理2D
Texture2D-tentexture=新的Texture2D(2,2);
//将图像字节加载到Texture2D
LoadImage(imageBytes);
//将纹理2D放入阵列中
纹理[i]=纹理;
}
//加载到Rawmage?
rawImage.texture=纹理[0];