我想使用对话框(有两个选项)。
我尝试了 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/