我是Unity和C#编程的新手。我只是想知道如何在按钮点击时打开一个模态窗口。
public class Buttonwindow: MonoBehaviour
{
public void clicked(Button button)
{
Debug.Log("Button click!");
}
}
这里会显示什么代码来显示弹出窗口?谢谢!
答案 0 :(得分:5)
使用yourModelWindowPanel.SetActive(true)
启用/显示您的窗口,并将false
传递给SetActive
功能以隐藏它。这可能是一个包含UI组件的面板。
public class Buttonwindow: MonoBehaviour
{
public GameObject modalWindow;
public void clicked(Button button)
{
Debug.Log("Button click!");
modalWindow.SetActive(true);
}
}
答案 1 :(得分:2)
在场景中,右键单击 - > UI - > Canvas创建画布(所有UI元素应该在Canvas中) 然后右键单击您创建的画布,然后在UI->你想要的元素(文字可能适用于你的purpouse)
然后正如@Programmer所说
public class Buttonwindow: MonoBehaviour
{
public GameObject modalWindow;
public void clicked(Button button)
{
Debug.Log("Button click!");
modalWindow.SetActive(true);
}
}
不要忘记在检查器
中将modalWindow设置为您的对象由于我的声誉,我无法发表评论,但这个答案只是对@Programmer真正答案的改进。
Here是Unity UI的教程。
答案 2 :(得分:2)
这两个“答案”都不能真正回答问题。模态窗口是保持焦点的窗口,在用户单击按钮满足“是/否”之类的条件之前,无法进行任何其他操作。这意味着当模式窗口处于活动状态时,其他任何事物都无法获得焦点。模态窗口无法导航。
要创建模式窗口,必须将面板中的所有按钮设置为显式导航并进行设置,以便它们只能导航至面板中的其他按钮。
如果面板中只有一个按钮,则将导航设置为无。
答案 3 :(得分:0)
要回答@ Ba'al注意事项,您可以使用此脚本锁定所有非子交互对象,以通过键盘/控制器导航获得模态效果。
using System.Collections.Generic;
using UnityEngine.UI;
using System;
using System.Linq;
namespace Legend
{
public class ModalLocker : MonoBehaviour
{
Selectable[] selectables;
void OnEnable()
{
selectables = FindObjectsOfType<Selectable>().Where(s => s.interactable && !s.transform.IsChildOf(transform)).ToArray();
foreach (var selectable in selectables)
{
selectable.interactable = false;
//Debug.Log($"{selectable} disabled");
}
}
void OnDisable()
{
if (selectables == null)
return;
foreach (var selectable in selectables)
selectable.interactable = true;
selectables = null;
}
}
}