在EditorWindow脚本内的OnSelectionChange()
内部:
我想检查选定的对象变换是否与测试中的变换之一相同。 selections
是列表test
是数组
首先,我想检查text
中的变换数据之一是否与所选对象变换数据相同。然后,在层次结构的编辑器中,我要删除对象,现在它是null
。现在selected
是null
。现在,我要检查对象是否为null
,但在第一次检查时是否相同,然后将标志设置为true
,如果不是null
或不相同,则将标志设置为{ {1}}。
false
下一步是使用该标志来决定是在OnGUI中启用true还是false:
private void OnSelectionChange()
{
selectionChanged = true;
var selections = Selection.objects.OfType<GameObject>().ToList();
var test = TransformSaver.LoadTransforms();
if (selections.Count > 0)
tempsel = selections;
if (tempsel.Count > 0)
{
for (int x = 0; x < tempsel.Count; x++)
{
for (int i = 0; i < test.Length; i++)
{
var selected = tempsel[x];
if (selected.transform.parent == test[i].parent &&
selected.transform.name == test[i].name &&
selected.transform.localPosition == test[i].pos &&
selected.transform.localRotation == test[i].rot &&
selected.transform.localScale == test[i].scale)
{
hasLoaded = true;
}
}
}
for (int y = 0; y < selections.Count; y++)
{
if (selections[y] == null && hasLoaded == true)
{
hasLoaded = false;
}
}
}
}
但到目前为止没有成功。
我所看到的主要目标逻辑规则,也许应该是其他规则,但这是我解释我想做的事情:
比较选择和测试之间的“变换”数据。
如果在针对测试数组的一个或多个选择对象中识别出数据,则将标志设置为true。
要检查一个或多个选择对象是否为空,以及现在是否为空,以检查是否在第一次检查(1)中标识了它们。
如果同时标识了一个或多个选定对象以及一个或多个“测试转换”数据,并且它们也都为null,则将另一个标志设置为true。
使用新标志(是true还是false)来决定是否启用“加载”按钮
上次测试的TransformSaver类从以下位置获取Transforms数据数组:(我还有另一个按钮“ Save”,用于保存对象的选择,然后使用private void Load()
{
if (selectionChanged)
{
if (hasLoaded == true)
{
GUI.enabled = true;
}
else
{
GUI.enabled = false;
}
}
if (GUILayout.Button("Load"))
{
TransformSaver.LoadTransform();
hasLoaded = false;
}
}
返回已保存的Transforms的数据数组来自JSON文件)
LoadTransforms()