2016-04-22 43 views
-1

私は、デスクトップとモバイルプラットフォーム用の統一アプリケーションを作成しました。画面の左上隅には地図があります。この地図には、各フレームごとに円が描かれています。サークルの位置は実行時にいつでも変更されます。2次元画像を画面に表示する方法unity3d

この作業では、テクスチャに円を描き、このテクスチャを描画します。このコードはエミュレータでは動作しますが、アンドロイドの携帯電話やタブレットでは動作しません。私は地図上に円が見えません。

私のコードはここにある:

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); 
    } 
} 

一部の人々はOnGUIを非推奨と言います。しかし、私がOnGUIにボタンを作成すると、それはアンドロイド上の実行時に表示されます。

私は別の解決策を試しました。シーンに3D平面オブジェクトを作成し、.pngファイルをテクスチャとしてドラッグします。しかし、私は円を引いた変数Texture2Dを使ってこのテクスチャを変更しません。

+1

なぜあなたは 'スプライト'を使用しませんか? –

+0

xとyの位置を画面の幅と高さで分けます。 – LumbusterTick

答えて

0

スプライトを使用する必要があります。なぜ、アップデートの代わりにOnGui関数を使用したのですか?

たぶん資産ストア上の外観を得る:2DToolkit

+0

'if(Event.current.type.Equals(EventType.Repaint))'は、UpdateではなくOnGUI関数のみを返します。私はスプライトを使用しようとします。 – zumma

0

は、お使いのデバイスとあなたの画像の解像度は何ですか?

あなたのコンピュータの画面とあなたのデバイスとの間の解像度の変更を考慮する必要があるので、私はこれを求めています。

hereのように、rect値はピクセル単位である必要があります。

テクスチャの読み込みにはraw image、描画の処理にはCanvas、円の位置を制御するにはRectTransformを使用することをおすすめします。

これらのコンポーネントには、この問題が発生する可能性がある多くの機能があります。

関連する問題