Делаю себе простенький редактор базы предметов.
Все поля отрисовывают через EditorGUILayout.
Но в редакторе лейаут вылезает за пределы инспектора.
Я вот гифку сделал
https://i.gyazo.com/a884614cceac264efc6 ... 948b0e.gif
Не знаете как это пофиксить?
Код:
Синтаксис:
Используется csharp
public override void OnInspectorGUI()
{
//base.OnInspectorGUI();
int[] itemID = database.GetAllIDs();
EditorGUILayout.LabelField("Items Count: " + itemID.Length);
EditorGUILayout.BeginVertical();
for(int i = 0; i < itemID.Length; i++)
{
DrawItem(itemID[i]);
}
EditorGUILayout.EndVertical();
// Add empty item
if(GUILayout.Button("Add"))
{
database.CreateEmptyItem();
AssetDatabase.SaveAssets();
}
// Save database
if (GUILayout.Button("Save"))
{
AssetDatabase.SaveAssets();
}
EditorUtility.SetDirty(target);
}
void DrawItem(int id)
{
Item item = database.GetItem(id);
if (item == null) return;
// Icon
item.sprite = (Sprite)EditorGUILayout.ObjectField(item.sprite, typeof(Sprite), false);
// ID, Category and Type
EditorGUILayout.BeginHorizontal();
{
EditorGUILayout.LabelField("ID: " + item.id);
item.itemCategory = (EItemCategory)EditorGUILayout.EnumPopup(item.itemCategory);
item.itemType = (EItemType)EditorGUILayout.EnumPopup(item.itemType);
}
EditorGUILayout.EndHorizontal();
// Name and Description
EditorGUILayout.LabelField("Name");
item.name = EditorGUILayout.TextField(item.name);
EditorGUILayout.Space();
EditorGUILayout.LabelField("Description");
item.description = EditorGUILayout.TextArea(item.description);
// Parameters
EditorGUILayout.BeginHorizontal();
{
item.value = EditorGUILayout.FloatField("Value", item.value);
item.maxValue = EditorGUILayout.FloatField("Cap", item.maxValue);
item.durability = EditorGUILayout.FloatField("Dur", item.durability);
}
EditorGUILayout.EndHorizontal();
if (GUILayout.Button("Remove", GUILayout.MaxWidth(60f)))
{
database.RemoveItem(id);
}
EditorGUILayout.Space();
EditorGUILayout.Separator();
}
{
//base.OnInspectorGUI();
int[] itemID = database.GetAllIDs();
EditorGUILayout.LabelField("Items Count: " + itemID.Length);
EditorGUILayout.BeginVertical();
for(int i = 0; i < itemID.Length; i++)
{
DrawItem(itemID[i]);
}
EditorGUILayout.EndVertical();
// Add empty item
if(GUILayout.Button("Add"))
{
database.CreateEmptyItem();
AssetDatabase.SaveAssets();
}
// Save database
if (GUILayout.Button("Save"))
{
AssetDatabase.SaveAssets();
}
EditorUtility.SetDirty(target);
}
void DrawItem(int id)
{
Item item = database.GetItem(id);
if (item == null) return;
// Icon
item.sprite = (Sprite)EditorGUILayout.ObjectField(item.sprite, typeof(Sprite), false);
// ID, Category and Type
EditorGUILayout.BeginHorizontal();
{
EditorGUILayout.LabelField("ID: " + item.id);
item.itemCategory = (EItemCategory)EditorGUILayout.EnumPopup(item.itemCategory);
item.itemType = (EItemType)EditorGUILayout.EnumPopup(item.itemType);
}
EditorGUILayout.EndHorizontal();
// Name and Description
EditorGUILayout.LabelField("Name");
item.name = EditorGUILayout.TextField(item.name);
EditorGUILayout.Space();
EditorGUILayout.LabelField("Description");
item.description = EditorGUILayout.TextArea(item.description);
// Parameters
EditorGUILayout.BeginHorizontal();
{
item.value = EditorGUILayout.FloatField("Value", item.value);
item.maxValue = EditorGUILayout.FloatField("Cap", item.maxValue);
item.durability = EditorGUILayout.FloatField("Dur", item.durability);
}
EditorGUILayout.EndHorizontal();
if (GUILayout.Button("Remove", GUILayout.MaxWidth(60f)))
{
database.RemoveItem(id);
}
EditorGUILayout.Space();
EditorGUILayout.Separator();
}