Как я могу ; преобразовать данные изображения, считанные из Properties.Resources в .dll, в изображение, текстуру2D или спрайт?

Во-первых, по какой-то причине я не могу использовать System.Drawing в своем скрипте С#. Я работаю в Unity3d, и ссылка на библиотеку удаляется каждый раз, когда я загружаю скрипт.

я получаю доступ к ресурсам моей dll, используя этот метод

//DaiM.Reality is the namespace 
// fgla is a class

            Assembly asm = typeof(DaiM.Reality.fgla).Assembly;
        string resourcename = asm.GetName().Name + ".Properties.Resources";
        ResourceManager rm = new ResourceManager(resourcename, asm);
        Texture2D imh = (Texture2D)rm.GetObject("flag"); // the problem
// error :: InvalidCastException: Cannot cast from source type to destination type.

если бы я мог использовать System.Drawing, я мог бы просто прочитать пиксели из растрового изображения и применить их к новому Texture2D. но единство не позволит мне использовать System.Drawing . Я предполагаю, что это потому, что некоторые классы в библиотеке System.Drawing и библиотеке UnityEngine конфликтуют.


person Community    schedule 02.04.2015    source источник


Ответы (1)


1) System.Drawing не включен в стандартные библиотеки Unity. Вы должны самостоятельно импортировать System.Drawing.dll в свой проект. Чтобы получить больше информации:

http://answers.unity3d.com/questions/53170/using-drawing-package-like-systemdrawing.html

2) DLL, которую вы пытаетесь импортировать, должна быть скомпилирована с параметром Target Framework, установленным на какую-то версию, которую понимает Unity (в настоящее время это 2.0). Убедитесь, что он установлен правильно.

3) Взгляните на этот пост для импорта изображений из DLL:

http://forum.unity3d.com/threads/resources-load-in-c-dll.62561/#post-403356

Надеюсь это поможет.

person Can Baycay    schedule 02.04.2015
comment
Я вижу, что библиотека System.Drawing версии 2.0 Хорошо, конечно, я это сделаю. большое спасибо это было очень полезно - person ; 02.04.2015
comment
только одно. я вижу ` Stream myStream = myAssembly.GetManifestResourceStream(HutongGames.PlayMakerEditor.Editor.Resources. + имя_ресурса + .png); ` он говорит, что это работает, но я не вижу, где он указывает на Свойства, а затем на Ресурсы, и этот скрипт запускается из dll? - person ; 03.04.2015
comment
хорошо, он указывает прямо на папку ресурсов. он продолжает говорить, что мой поток равен нулю. может ли это быть проблемой на стороне dll? - person ; 03.04.2015
comment
Мне жаль. Мне не хватало '.' - person ; 03.04.2015