2016-03-25 10 views
0

を埋め込まれたDLLのリソースからデータを渡すしようとしたとき、私の自動生成され、私はここで代わりにSystem.Drawing.Bitmap"ソースタイプから宛先タイプにキャストできません" eror throwされました。ここでは、フィールドに

namespace DaiMangou.Properties { 
    using System; 
    using UnityEngine; 

    /// <summary> 
    /// A strongly-typed resource class, for looking up localized strings, etc. 
    /// </summary> 
    // This class was auto-generated by the StronglyTypedResourceBuilder 
    // class via a tool like ResGen or Visual Studio. 
    // To add or remove a member, edit your .ResX file then rerun ResGen 
    // with the /str option, or rebuild your VS project. 
    [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")] 
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] 
    [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] 


    internal class GeneralImageResources { 


    internal static Texture2D ScaleHandle { 
       get { 
        object obj = ResourceManager.GetObject("ScaleHandle", resourceCulture); 
        return ((Texture2D)(obj)); 
       } 
      } 

} 

UnityEngine.Texture2Dクラスを使用するように修正するリソースクラスは、私の他のクラスは、別のスクリプトで

ですCanno:
public class ScaleHandle 
{ 

public Texture2D scaleHandleTexture = DaiMangou.Properties.GeneralImageResources.ScaleHandle; 

} 

これは、しかし「

InvalidCastExceptionがエラーをスローしますソースタイプから宛先タイプへのキャスト「私は私のscaleHandleTextureフィールドへScaleHandleテクスチャを渡すにはどうすればよい

ユニティエンジンは、System.Drawingの使用をサポートしていませんので、私は本当に傾ける使用ビットマップ

+3

明らかに、キャスト例外は 'return((Texture2D)(obj));'(あなたのリソースは 'Texture2D'型であるべきではありません)の行からスローされます。 –

+0

私に知らせてくれてありがとう。 +1 私はそれを回避する方法がわかりません。 dllを使用する特定のプラットフォームと比較可能な問題があります。リソースをTexture2Dタイプにすることは、その周りの唯一の方法でした。 ScaleHandleテクスチャをscaleHandleTextureフィールドに渡すにはどうしたらいいですか? –

答えて

0

まず、ドン」 tはBitmapImage型にそれらを聞かせて、あなたの自動生成リソースファイルを変更し

herebyte[]BitmapImage(Pとの警告を変換するためのコードがありますあなたのイメージタイプのために右のエンコーダを使用しての芸術):

byte[] data; 
JpegBitmapEncoder encoder = new JpegBitmapEncoder(); 
encoder.Frames.Add(BitmapFrame.Create(DaiMangou.Properties.GeneralImageResources.ScaleHandle)); 
using(MemoryStream ms = new MemoryStream()) 
{ 
    encoder.Save(ms); 
    data = ms.ToArray(); 
} 

そして最後にhereTexture2Dに変換するためのコードです:

要するに
Texture2D.LoadImage(data); 

public class ScaleHandle 
{ 
    protected static Texture2D ImageToTexture(Image srcImage) 
    { 
     byte[] data; 
     JpegBitmapEncoder encoder = new JpegBitmapEncoder(); 
     encoder.Frames.Add(BitmapFrame.Create(srcImage)); 
     using(MemoryStream ms = new MemoryStream()) 
     { 
      encoder.Save(ms); 
      data = ms.ToArray(); 
     } 
     Texture2D tex = new Texture2D(2, 2); 
     tex.LoadImage(data); 
     return tex; 
    } 

    public Texture2D scaleHandleTexture = ImageToTexture(DaiMangou.Properties.GeneralImageResources.ScaleHandle); 
} 

PS:Iユニティが何であるかを知らないので、それが価値あるものであるかどうかを確認してください。

+0

+1これまでの支援。 少し後でコードをテストし、それがどうなるかを教えてくれます。 –

+0

私はこれを私のために働かせることができませんでしたが、ありがとう。 –

関連する問題