Ошибка в редакторе не указывает имя скрипта или номер строки.
Когда я устраню ошибку в окне консоли, ошибка появится снова через несколько секунд.
Полное сообщение об ошибке:
Окно графического интерфейса попыталось начать рендеринг, в то время как что-то еще не завершило рендеринг! Либо у вас рекурсивный рендеринг OnGUI, либо предыдущий OnGUI не был очищен должным образом.
Код: Выделить всё
using System.Collections;
using System.Collections.Generic;
using UnityEditor;
using UnityEngine;
[CustomEditor(typeof(TagsAndLayers))]
public class TagsAndLayersCustomEditor : Editor
{
string tagname = "";
string layername = "";
public override void OnInspectorGUI()
{
DrawDefaultInspector();
TagsAndLayers myTarget = (TagsAndLayers)target;
tagname = EditorGUILayout.TextField("", tagname);
if (tagname == "" || tagname == null)
{
GUI.enabled = false;
}
else
{
GUI.enabled = true;
}
if (GUILayout.Button("Create Tag"))
{
myTarget.AddNewTag(tagname);
}
if (GUILayout.Button("Remove Tag"))
{
myTarget.DeleteTag(tagname);
}
GUILayout.Space(50);
layername = EditorGUILayout.TextField("", layername);
if(layername == "" || layername == null)
{
GUI.enabled = false;
}
else
{
GUI.enabled = true;
}
if (GUILayout.Button("Create Layer"))
{
myTarget.AddNewLayer(layername);
}
if (GUILayout.Button("Remove Layer"))
{
myTarget.DeleteLayer(layername);
}
}
}
Код: Выделить всё
using System.Collections;
using System.Collections.Generic;
using UnityEditor;
using UnityEngine;
[CustomEditor(typeof(TagsAndLayers))]
public class TagsAndLayersCustomEditor : Editor
{
string tagname = "";
string layername = "";
public override void OnInspectorGUI()
{
DrawDefaultInspector();
TagsAndLayers myTarget = (TagsAndLayers)target;
EditorApplication.delayCall += () => myTarget.AddNewTag(tagname);
tagname = EditorGUILayout.TextField("", tagname);
if (tagname == "" || tagname == null)
{
GUI.enabled = false;
}
else
{
GUI.enabled = true;
}
if (GUILayout.Button("Create Tag"))
{
myTarget.AddNewTag(tagname);
}
if (GUILayout.Button("Remove Tag"))
{
myTarget.DeleteTag(tagname);
}
GUILayout.Space(50);
layername = EditorGUILayout.TextField("", layername);
if(layername == "" || layername == null)
{
GUI.enabled = false;
}
else
{
GUI.enabled = true;
}
if (GUILayout.Button("Create Layer"))
{
myTarget.AddNewLayer(layername);
}
if (GUILayout.Button("Remove Layer"))
{
myTarget.DeleteLayer(layername);
}
}
}
Код: Выделить всё
EditorApplication.delayCall += () => myTarget.AddNewTag(tagname);
Подробнее здесь: https://stackoverflow.com/questions/683 ... -something
Мобильная версия