Создание материалов с текстурой из файла во время выполнения [дубликат]

Последняя версия java (Java 7) позволяет операторам операторов switch в Strings, если вариантов не так много, вы могли бы просто сделать это или подобное:

int value = getValue();
Switch(myString) {
  Case "value > 2" : if (value > 2) {  doSomething();} break;
  Case "4 < value < 6" : if (4 < value < 6) {  doSomethingElse();} break;
  default : doDefault();
}
1
задан Jack M. 6 March 2017 в 11:46
поделиться

1 ответ

Сначала я пытаюсь заставить его работать только с изображениями.

Я очень новичок в 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];
3
ответ дан Programmer 15 August 2018 в 20:22
поделиться
Другие вопросы по тегам:

Похожие вопросы: