c# - 如何在 Unity 中创建对话框(不使用 UnityEditor)?

标签 c# unity3d dialog

我想使用对话框(有两个选项)。

我尝试了 UnityEditor,但是当我构建项目以创建 exe 文件时,它不起作用,因为具有 UnityEditor 引用的脚本仅在编辑模式下工作。在 Internet 上搜索了几个小时后,有两个建议(均无效)。

第一个:在代码前使用#if UNITY_EDITOR,以#endif结束。在这种情况下,它的构建没有错误,但我的游戏中根本没有对话框。

第二个:将脚本放在Assets/Editor目录下。在这种情况下,我无法将脚本添加到我的游戏对象中。也许,在 Editor 目录下创建一个新脚本并在其中粘贴 UnityEditor 使用过的行会起作用,但我不知道该怎么做。

我用过:

#if UNITY_EDITOR
if (UnityEditor.EditorUtility.DisplayDialog("Game Over", "Again?", "Restart", "Exit"))
            {
                Application.LoadLevel (0); 
            }
            else
            {
                Application.Quit();
            }
#endif

我还尝试添加“using UnityEditor;”并用我提到的预处理器命令封装它。也是没用的。

有没有人知道如何在运行模式下使用 UnityEditor 或如何以不同的方式创建对话框?

最佳答案

如果我理解正确,你需要一个弹出窗口,当角色死亡(或玩家失败)时。 UnityEditor 类用于扩展编辑器,但在您的情况下,您需要一个游戏内解决方案。这可以通过 gui 窗口实现。

这是一个用 C# 编写的简短脚本,可以实现此目的。

using UnityEngine;
using System.Collections;

public class GameMenu : MonoBehaviour
{
     // 200x300 px window will apear in the center of the screen.
     private Rect windowRect = new Rect ((Screen.width - 200)/2, (Screen.height - 300)/2, 200, 300);
     // Only show it if needed.
     private bool show = false;

    void OnGUI () 
    {
        if(show)
            windowRect = GUI.Window (0, windowRect, DialogWindow, "Game Over");
    }

    // This is the actual window.
    void DialogWindow (int windowID)
    {
        float y = 20;
        GUI.Label(new Rect(5,y, windowRect.width, 20), "Again?");

        if(GUI.Button(new Rect(5,y, windowRect.width - 10, 20), "Restart"))
        {
            Application.LoadLevel (0);
            show = false;
        }

        if(GUI.Button(new Rect(5,y, windowRect.width - 10, 20), "Exit"))
        {
           Application.Quit();
           show = false;
        }
    }

    // To open the dialogue from outside of the script.
    public void Open()
    {
        show = true;
    }
}

您可以将此类添加到您的任何游戏对象,并调用其 Open 方法来打开对话。

关于c# - 如何在 Unity 中创建对话框(不使用 UnityEditor)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18434581/

相关文章:

c# - C#线程和类问题

c# - 测试 WebApi Controller 时如何生成 Asp.net 用户身份

c# - 使 anchor 最小最大定位在 Gameobject ui 角的脚本?

某一特定选项卡上的 jQuery Tab 自定义事件

android - 如何为不同的 Activity 实现对话?

jQuery Ui 对话框按钮,如何添加类?

c# - WPF 列表框样式

c# - 如果任务管理器中的内存使用量不断增加,如何知道是否是内存泄漏

c# - 使用 UnityAction 传递参数

c# - Unity3D : Performance with multi-camera rendering with a lot of spheric meshes