n-yoda's blog

主にUnity3Dに関するあんまり技術的じゃないメモ的な何かを書いています。

GUITexture.LeftBorder、TopBorder…をOnGUIでやる

UI表示する際に、縁取り分の数ピクセルの幅を固定して、
綺麗な画質のまま拡大縮小したいときってありますよね?

GUITextureを使えばLeftBorderなどのプロパティがあるので簡単ですが、
OnGUIの中で同じ事をやる方法を紹介します。
Graphics.DrawTextureを使います!

void DrawTexture (Rect screenRect, Texture texture, int leftBorder, int rightBorder, int topBorder);

leftBorder, rightBorder...の単位はピクセルです

void OnGUI(){
	if (Event.current.type == EventType.Repaint) {
		Graphics.DrawTexture (rect, texture, left, right, top);
	}
}

GUI.DrawTextureと違うのは、OnGUIが描画イベントとして呼ばれているかどうかをチェックしなければいけないところ。
(チェックしなくても問題は起きないけど、やっぱりオーバーヘッドが大きいくなるのかな?)