0
0

Editor拡張による譜面エディタ作成のメモ

Posted at

はじめに

音ゲーを作っていて1番困ること...
譜面ファイル作成用エディタを用意することですかね。
またまた愚痴ですが情報が少なすぎる。
今回は僕が譜面エディタをunityのエディタ拡張で作る上でよく使ったもののメモです。
(これ以降使わない気がするけど)

文字の表示

GUILayout.Label("表示したい文字");

これを中央寄せにするには...

GUIStyle style = new GUIStyle();
style.alignment = TextAnchor.MiddleCenter;
GUILayout.Label("表示したい文字", style);

文字を横並びにするには...

using (new EditorGUILayout.HorizontalScope())
{
    GUILayout.Label("表示させたい文字1");
    GUILayout.Label("表示させたい文字2");
}

縦並びにするには...

using (new EditorGUILayout.VerticalScope())
{
    GUILayout.Label("表示させたい文字1");
    GUILayout.Label("表示させたい文字2");
}

スクロールバーの位置

縦スクロールならwidthを、横スクロールならheightを設定します

scrollPosition = EditorGUILayout.BeginScrollView(scrollPosition, GUILayout.Width(スクロールバーの位置), GUILayout.ExpandHeight(true));
{
    EditorGUILayout.LabelField(" ", GUILayout.Height(スクロールの大きさ));
}
EditorGUILayout.EndScrollView();

長方形の描画

Rect rect = new Rect(100,200,300,200);
EditorGUI.DrawRect(rect, Color.red);

ウィンドウの作成

Rect rect = new Rect(
    100,
    100,
    200,
    300);
BeginWindows();//これがないとウィンドウは表示されません
rect = GUI.Window(0, DisplayWindow, "Dialog");
EndWindows();

void DisplayWindow(int id)
{
    //ここにGUI.DragWindow();を書くとウィンドウがドラッグ可能に
    GUILayout.LabelField("window!");
    GUI.DragWindow();//ドラッグ不可
}

  • Handles.DrawLine()はOnGUI()内で呼び出されるメソッド内で使わずOnGUI()内で直接使う。
  • 位置は左上が基準。右がxの+方向、下がyの+方向。

計算上の注意

intの割り算の結果は切り捨て

int a = 5;
int b = 2;
float c = a / b;//2.5切り捨て2

c = (float)a / (float)b;//2.5切り捨て2
//a / bされた後floatに変換される

基本のことなのでしょうが今回エディターを作る上で初めて知りました。
計算する前にfloatに変換しましょう。

int a = 5;
int b = 2;
float _a = (float)a;
float _b = (float)b;
float c = _a / _b;//2.5

おわりに

エディタ拡張をやることで色々と知る事が出来ました。何かの参考になれば幸いです。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0