EditorUtility.OpenFilePanel执行两次

时间:2018-08-28 10:25:18

标签: c# unity3d

当我按L时,我想在运行时使用C#在Unity中打开OBJ文件。但是,文件对话框始终打开两次。选择第一个文件后,将出现一个新对话框。无论我第一次选择还是第二次选择任何文件,都将打开并显示两个文件。 我有:

void Update ()
{
    if (Input.GetKeyDown(KeyCode.L)) {
        LoadObj();
        //StartCoroutine(ExecuteAfterTime(5));
    }
}
IEnumerator ExecuteAfterTime(float time)
{
    yield return new WaitForSeconds(time);
}
void LoadObj()
{
    string path = EditorUtility.OpenFilePanel("Load scan file", "", "obj");
    \\Open the file and display it
}

我尝试过:

  • 添加时间(请参见上面的注释代码)-无效
  • 添加一个布尔值,该布尔值仅在打开前一个文件时才执行LoadObj()-不起作用
  • EditorUtility.OpenFilePanel()之前或之后添加了yield return new WaitForSeconds(time)-在后一种情况下,延迟时间为5秒,但在两种情况下仍然打开两次。

我搜索了其他解决方案,但未找到其他任何解决方案。 我在Windows机器上工作并使用Unity2018。目标是一次打开一个文件,但是几分钟后必须打开另一个文件。 知道如何防止对话框两次打开吗?

1 个答案:

答案 0 :(得分:0)

按照@Eshan Mohammadi的建议,我检查了是否只有一个代码实例。我删除了整个文件,创建了一个新文件,并将其添加到我的GameObject中。但是,只有到那时,我才注意到这个特定的GameObject被复制了,当然包括代码。 因此,我改变了GameObject复制和解决问题的方式。