- 追加された行はこのように表示されます。
- 削除された行は
このように表示されます。
!!!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}}