トップ 一覧 検索 ヘルプ RSS ログイン

unity_script_draw2dの変更点

  • 追加された行はこのように表示されます。
  • 削除された行はこのように表示されます。
!!!2D描画用拡張クラスを作る
GLの描画は太さ1.0のラインを引くかポリゴンを描く、のコマンドしかないです。
これをラップして、

*太さのある線を描画
*破線を描画
*四角形の描画
*円の描画
*ポリゴンの描画
を行うクラスを作成。クラス名を「UtilDraw2D」としています。
!!クラスの指定
添付の「{{ref UtilDraw2D.cs}}」をAssetに追加。
Main Cameraに割り当てたスクリプトの「OnPostRender」もしくは「OnRenderObject」で、以下のように呼び出せます。
 private UtilDraw2D m_draw2D;
 void Start () {
     m_draw2D = new UtilDraw2D();
 }
  
 void OnPostRender() {
    // 描画開始.
    m_draw2D.Begin();
    {
        m_draw2D.SetLineWidth(0.0f);  // ラインの太さを指定 (0.0なら太さ指定なし).
        m_draw2D.SetLineDot(0.0f);    // ラインを破線にする場合の間隔指定(0.0なら破線なし).
        Vector3 [] posA = new Vector3[5];
        posA[0] = new Vector3(10.0f, 10.0f, 0.0f);
        posA[1] = new Vector3(20.0f, 80.0f, 0.0f);
        posA[2] = new Vector3(70.0f, 50.0f, 0.0f);
        posA[3] = new Vector3(50.0f, 20.0f, 0.0f);
        posA[4] = new Vector3(10.0f, 10.0f, 0.0f);
 
        // ポリゴン描画.
        // ポリゴン描画(時計周りに頂点を指定のこと).
        m_draw2D.DrawPolyon(posA, new Color(0.0f, 0.0f, 0.3f));
    
        // ライン描画.
        m_draw2D.DrawLines(posA, Color.red);
            
        // 円の描画.
        {
            m_draw2D.SetLineWidth(2.0f);
            m_draw2D.SetLineDot(4.0f);
                
            Vector3 center = new Vector3(100.0f, 150.0f, 0.0f);
            float r = 50.0f;
            m_draw2D.DrawCircleFill(center, r, new Color(0.0f, 0.4f, 0.0f));
            m_draw2D.DrawCircle(center, r, Color.red);
        }
 
        // 矩形の描画.
        {
            m_draw2D.SetLineWidth(1.0f);
            m_draw2D.SetLineDot(0.0f);
                
            Vector3 v0 = new Vector3(Screen.width - 20, Screen.height - 20);
            Vector3 v1 = new Vector3(Screen.width - 80.0f, Screen.height - 80.0f);              
            m_draw2D.DrawRectangleFill(v0, v1, new Color(0.0f, 0.0f, 0.4f));
            m_draw2D.DrawRectangle(v0, v1, Color.red);
        }
        
        // ベジェの描画.
        {
            m_draw2D.SetLineWidth(1.0f);
            m_draw2D.SetLineDot(0.0f);
 
            Vector3 [] posB = new Vector3[8];
            
            posB[0] = new Vector3(30, 140);
            posB[1] = new Vector3(60, 180);
            posB[2] = new Vector3(90, 160);
            posB[3] = new Vector3(125, 100);
            posB[4] = new Vector3(125, 100);
            posB[5] = new Vector3(180, 60);
            posB[6] = new Vector3(210, 140);
            posB[7] = new Vector3(240, 120);
            m_draw2D.DrawBezier(posB, new Color(0.2f, 0.7f, 1.0f));
                
            Vector3 v0 = new Vector3(0.0f, 0.0f);
            Vector3 v1 = new Vector3(0.0f, 0.0f);
        }
    }
    // 描画終了.
    m_draw2D.End();
 }
UtilDraw2D クラスは、スクリーンの左下を(0, 0)、スクリーンの右上を(Screen.width, Screen.height)としたときのGL命令を使用した描画を行います。
上記を実行すると以下のように描画されます。
{{ref_image utilDraw2D_img.png}}