はじめに
音ゲーを作っていて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
おわりに
エディタ拡張をやることで色々と知る事が出来ました。何かの参考になれば幸いです。