2016-04-22 14 views
-1

Ich habe eine Einheitsanwendung für Desktop- und mobile Plattformen erstellt. Es gibt eine Karte in der oberen linken Ecke des Bildschirms. Ich zeichne jeden Rahmen auf dieser Karte. Die Position des Kreises ändert sich zur Laufzeit jederzeit.So zeigen Sie 2d Bild auf dem Bildschirm an unity3d

Um für diese Aufgabe zu tun, zeichne ich Kreis auf Textur und zeichne diese Textur. Dieser Code funktioniert auf Emulator, aber nicht Android-Handy oder Tablet. Ich sehe keinen Kreis auf der Karte.

Mein Code ist hier:

TextAsset imageAsset; // .png changes to .png.bytes. And the file dragged to this variable on inspector. 

Start() { 
    texture.LoadImage(imageAsset.bytes); 
} 

void OnGUI() { 

    Circle(texture, x, y, Color.red); 

    if (Event.current.type.Equals(EventType.Repaint)) 
    { 
    Graphics.DrawTexture(new Rect(..), texture); 
    } 
} 

Manche Leute sagen, OnGUI veraltet. Aber wenn ich eine Schaltfläche in OnGUI erstellen, wird es zur Laufzeit auf Android angezeigt.

Ich versuchte eine andere Lösung. Ich erstelle ein 3D-Ebenen-Objekt in meiner Szene und ziehe die .png-Datei als Textur. Aber ich ändere diese Textur nicht mit der Texture2D Variable, die ein Kreis ist.

+1

Warum benutzen Sie 'Sprites' nicht? –

+0

teile die x- und y-Positionen nach Bildschirmbreite und -höhe in deinem Rect – LumbusterTick

Antwort

0

Sie sollten Sprites verwenden, und warum haben Sie die OnGui-Funktion anstelle des Updates verwendet?

Vielleicht einen Blick auf dem Asset Speicher erhalten: 2DToolkit

+0

'if (Event.current.type.Equals (EventType.Repaint))' gibt nur die OnGUI-Funktion zurück, nicht Update. Ich werde versuchen, Sprite zu verwenden. – zumma

0

Was ist die Auflösung von dem Gerät und das Bild?

Ich frage das, weil Sie eine Änderung der Auflösungen zwischen Ihrem Computerbildschirm und Ihrem Gerät berücksichtigen sollten.

Wie Sie sehen können here Ihre rect Werte müssen in Pixel sein.

Ich empfehle Sie raw image zu verwenden für Ihre Textur Laden, ein Canvas zum Zeichnen der Handhabung und RectTransform für Ihre Kreisposition anstatt zu steuern.

Diese Komponenten verfügen über viele Funktionen, um diese möglichen Auflösungsprobleme zu lösen.