void OnGUI() { EditorGUI.BeginChangeCheck(); selected = GUILayout.Toolbar(selected, new string[] { "terra", "object" }); if (EditorGUI.EndChangeCheck()) { parent.Focus(); } // グリッド線を描画する for (int yy = 0; yy < mapSize; yy++) { for (int xx = 0; xx < mapSize; xx++) { DrawGridLine(gridRect[yy, xx]); } } // クリックされた位置を探して、その場所に画像データを入れる Event e = Event.current; if (e.type == EventType.MouseDown) { Vector2 pos = Event.current.mousePosition; int xx; // x位置を先に計算して、計算回数を減らす for (xx = 0; xx < mapSize; xx++) { Rect r = gridRect[0, xx]; if (r.x <= pos.x && pos.x <= r.x + r.width) { break; } } if (xx == mapSize) { xx--; } // 後はy位置だけ探す for (int yy = 0; yy < mapSize; yy++) { if (gridRect[yy, xx].Contains(pos)) { if (selected == 0) { terramap[yy, xx] = parent.SelectedTerra; } else if (selected == 1) { objmap[yy, xx] = parent.SelectedObj; } Repaint(); break; } } } // 選択した画像を描画する for (int yy = 0; yy < mapSize; yy++) { for (int xx = 0; xx < mapSize; xx++) { if (parent.terratex[(int)terramap[yy, xx]] != null) { GUI.DrawTexture(gridRect[yy, xx], parent.terratex[(int)terramap[yy, xx]]); } } } for (int yy = 0; yy < mapSize; yy++) { for (int xx = 0; xx < mapSize; xx++) { if (parent.objtex[(int)objmap[yy, xx]] != null) { GUI.DrawTexture(gridRect[yy, xx], parent.objtex[(int)objmap[yy, xx]]); } } } // 出力ボタン Rect rect = new Rect(0, WINDOW_H - 50, 300, 50); GUILayout.BeginArea(rect); if (GUILayout.Button("output file", GUILayout.MinWidth(300), GUILayout.MinHeight(50))) { OutputFile(); } GUILayout.FlexibleSpace(); GUILayout.EndArea(); }