自定义小地图类
- 打开UI文件夹,点击鼠标右键
Create->MonoBehaviour Script创建C#文件,命名为NavMap - 打开NavMap.cs,将内容修改如下:
C#
using UnityEditor.Experimental.GraphView;
using UnityEngine.UIElements;
namespace E.Story
{
// 导航地图
public class NavMap : MiniMap
{
public void Init()
{
// 默认浮动
anchored = false;
// 默认不可见
visible = false;
}
public override void BuildContextualMenu(ContextualMenuPopulateEvent evt)
{
if (!windowed)
{
// 切换小地图的浮动/固定模式
evt.menu.AppendAction(anchored ? "浮动" : "固定",
action => { anchored = !anchored; },
DropdownMenuAction.AlwaysEnabled);
}
}
}
}在视图中添加小地图
打开StoryGraphView.cs,新增字段navMap,新增AddMiniMap方法和ToggleMiniMap方法
C#
private NavMap miniMap;
// 添加小地图
private void AddMiniMap()
{
miniMap = new();
miniMap.Init();
miniMap.SetPosition(new(0, 0, 200, 200));
Add(miniMap);
}
// 切换小地图
public void ToggleMiniMap()
{
miniMap.visible = !miniMap.visible;
}修改StoryGraphView方法,增加调用语句
C#
// 构造器
public StoryGraphView(StoryEditorWindow window)
{
/* ... 此处代码已省略 ... */
AddMiniMap();
}实现切换显示小地图
打开StoryGraphView.cs,新增ToggleMiniMap方法
C#
// 切换小地图
private void ToggleMiniMap()
{
graphView.ToggleMiniMap();
// 切换按钮样式
btnMiniMap.ToggleInClassList("button__selected");
}修改AddToolbar方法,实现按钮功能
C#
// 添加工具栏
private void AddToolbar()
{
/* ... 此处代码已省略 ... */
btnMiniMap = ElementUtility.CreateButton("小地图", () => ToggleMiniMap());
/* ... 此处代码已省略 ... */
}打开ToolbarStyle.uss,将选择器“.toolbar__button__selected”重命名为“.button__selected”
CSS
/* 按钮(选中时) */
.button__selected
{
color: var(--colors-yellow);
}美化小地图
打开GraphViewStyle.uss,添加如下样式:
CSS
/* -------------------------------------------------------导航面板 */
/* 导航面板 */
NavMap
{
border-color: var(--colors-dark-grey-6);
background-color: var(--colors-dark-grey-1);
}
/* 导航面板 > 标签 */
NavMap > Label
{
visibility: hidden;
}测试效果
最终窗口效果如下:

相关链接
- 完整代码:https://gitee.com/helloestar/e-story/wikis/DevelopNotes/16
- 视频版本:制作中……


