如果它们相同,如何比较Transforms数据,然后检查它们是否为null?

时间:2018-09-07 20:56:38

标签: c# unity3d

在EditorWindow脚本内的OnSelectionChange()内部:

我想检查选定的对象变换是否与测试中的变换之一相同。 selections是列表test是数组

首先,我想检查text中的变换数据之一是否与所选对象变换数据相同。然后,在层次结构的编辑器中,我要删除对象,现在它是null。现在selectednull。现在,我要检查对象是否为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;
            }
        }
    }
}

但到目前为止没有成功。

我所看到的主要目标逻辑规则,也许应该是其他规则,但这是我解释我想做的事情:

  1. 比较选择和测试之间的“变换”数据。

  2. 如果在针对测试数组的一个或多个选择对象中识别出数据,则将标志设置为true。

  3. 要检查一个或多个选择对象是否为空,以及现在是否为空,以检查是否在第一次检查(1)中标识了它们。

  4. 如果同时标识了一个或多个选定对象以及一个或多个“测试转换”数据,并且它们也都为null,则将另一个标志设置为true。

  5. 使用新标志(是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()

0 个答案:

没有答案
相关问题