Version: 2023.1

ReserveModifiersAttributeConstructor

切换到手册
public ReserveModifiersAttribute (ShortcutManagement.ShortcutModifiers modifiers);

参数

modifiers One or more modifiers to reserve.

描述

Creates an attribute that reserves a modifier for a single shortcut.

using UnityEditor;
using UnityEditor.ShortcutManagement;
using UnityEngine;

public class CustomSceneViewNavigation : ScriptableSingleton<CustomSceneViewNavigation> { bool moveForward; bool moveBack; bool boost;

[ClutchShortcut("Custom Scene Navigation/Move Forward", KeyCode.KeypadMinus)] [ReserveModifiers(ShortcutModifiers.Shift)] static void MoveForward(ShortcutArguments args) { instance.moveForward = args.stage == ShortcutStage.Begin; }

[ClutchShortcut("Custom Scene Navigation/Move Back", KeyCode.KeypadPlus)] [ReserveModifiers(ShortcutModifiers.Shift)] static void MoveBack(ShortcutArguments args) { instance.moveBack = args.stage == ShortcutStage.Begin; }

private void OnEnable() { SceneView.duringSceneGui += DuringSceneGUI; }

private void OnDisable() { SceneView.duringSceneGui -= DuringSceneGUI; }

void DuringSceneGUI(SceneView view) { boost = Event.current.shift;

var speed = boost ? 5 : 1; var direction = Vector3.zero;

if (moveForward) direction += view.camera.transform.forward;

if (moveBack) direction += -view.camera.transform.forward;

view.pivot += direction.normalized * Time.smoothDeltaTime * speed; } }