在Unity编辑器窗口中,可以使用GenericMenu类来创建一个自定义的上下文菜单,并将项目添加到菜单中。以下是如何将列表中的项目添加到GenericMenu的步骤:
GenericMenu menu = new GenericMenu();
foreach (string project in projectList)
{
menu.AddItem(new GUIContent(project), false, OnMenuItemSelected, project);
}
上述代码将遍历项目列表,并将每个项目作为菜单项添加到GenericMenu中。OnMenuItemSelected是一个回调函数,用于处理选择菜单项时的操作。在这个例子中,我们将项目名称作为参数传递给回调函数。
Rect menuRect = new Rect(Event.current.mousePosition.x, Event.current.mousePosition.y, 0, 0);
menu.DropDown(menuRect);
这将在指定的矩形区域显示菜单。
完整的示例代码如下:
using UnityEditor;
using UnityEngine;
using System.Collections.Generic;
public class MyEditorWindow : EditorWindow
{
private List<string> projectList = new List<string>() { "Project 1", "Project 2", "Project 3" };
[MenuItem("Window/My Editor Window")]
public static void ShowWindow()
{
EditorWindow.GetWindow(typeof(MyEditorWindow));
}
private void OnGUI()
{
if (GUILayout.Button("Show Menu"))
{
ShowMenu();
}
}
private void ShowMenu()
{
GenericMenu menu = new GenericMenu();
foreach (string project in projectList)
{
menu.AddItem(new GUIContent(project), false, OnMenuItemSelected, project);
}
Rect menuRect = new Rect(Event.current.mousePosition.x, Event.current.mousePosition.y, 0, 0);
menu.DropDown(menuRect);
}
private void OnMenuItemSelected(object project)
{
string selectedProject = (string)project;
Debug.Log("Selected project: " + selectedProject);
}
}
这个示例代码创建了一个自定义的编辑器窗口,并在窗口中添加了一个按钮。当按钮被点击时,将调用ShowMenu方法显示一个包含项目列表的上下文菜单。当选择菜单项时,将调用OnMenuItemSelected方法,并将选择的项目名称作为参数传递给该方法。
请注意,这个示例代码是基于Unity引擎的编辑器窗口开发,因此相关的Unity API和编辑器窗口的特定功能被使用。对于其他开发环境或框架,可能需要使用不同的方法来实现类似的功能。
腾讯云相关产品和产品介绍链接地址:
请注意,以上链接仅供参考,具体的产品选择应根据实际需求和情况进行评估和决策。
领取专属 10元无门槛券
手把手带您无忧上云