Сценарий имеет тип EditorWindow.
Переменная wasUndo является глобальным типом bool. Я хочу использовать этот флаг, чтобы решить, когда включить / выключить кнопку «Отменить последнее».
Проблема в том, что он внутри OnGUI и все время делает цикл. Я хочу, чтобы, если файл json существует, а размер файла велик, то 0, а если один или несколько объектов в списке выбора имеют значение null, тогда включите кнопку true, а затем при нажатии кнопки снова установите кнопку включения false.
То же самое происходит и сейчас, когда я удаляю объект в Иерархии, который является частью списка выбора. Кнопка становится активированной, но затем, когда я нажимаю кнопку, он снова становится активным ложным и никогда не поворачивает активирующее истинное.
private void OnGUI
{
//The saving part:
var selections = Selection.objects.OfType<GameObject>().ToList();
if (selections.Count > 0)
{
for (var i = selections.Count - 1; i >= 0; --i)
{
var selected = selections[i];
transformSelection.Add(selected.transform);
}
TransformSaver.SaveTransform(transformSelection.ToArray());
tempTransformSelection = transformSelection;
transformSelection = new List<Transform>();
}
//The loading part:
var file = @"d:\json\json.txt";
FileInfo fi = new FileInfo(file);
for (int i = 0; i < tempTransformSelection.Count(); i++)
{
if (File.Exists(@"d:\json\json.txt")
&& fi.Length > 0
&& tempTransformSelection[i] == null
&& wasUndo == false)
{
GUI.enabled = true;
wasUndo = false;
}
else
{
GUI.enabled = false;
}
}
if (GUILayout.Button("Undo last"))
{
TransformSaver.LoadTransform();
wasUndo = true;
}
}