Skip to content

Instantly share code, notes, and snippets.

@hiepnd
Last active July 29, 2021 10:53
Show Gist options
  • Save hiepnd/96108a59812c31f97ab9 to your computer and use it in GitHub Desktop.
Save hiepnd/96108a59812c31f97ab9 to your computer and use it in GitHub Desktop.
Some custom menu items for Unity
using UnityEngine;
using System.Collections;
using System.Collections.Generic;
using UnityEditor;
/*
* To create a hotkey you can use the following special characters:
* % (ctrl on Windows, cmd on OS X), # (shift), & (alt), <b>_</b> (no key modifiers).
* For example to create a menu with hotkey shift-alt-g use "MyMenu/Do Something #&g".
* To create a menu with hotkey g and no key modifiers pressed use "MyMenu/Do Something _g".
*/
public class CustomMenuItem {
[MenuItem("Tools/Clear all PlayerPrefs %#c")]
public static void ClearAllPlayerPrefs () {
PlayerPrefs.DeleteAll();
}
[MenuItem("Tools/Build %&b")]
public static void Build() {
var ss = EditorBuildSettings.scenes;
var scenes = new List<string>();
foreach (var c in ss) {
scenes.Add(c.path);
}
Debug.Log(string.Format("Building {0} to {1}", EditorUserBuildSettings.activeBuildTarget, EditorUserBuildSettings.GetBuildLocation(EditorUserBuildSettings.activeBuildTarget)));
BuildPipeline.BuildPlayer(scenes.ToArray(), EditorUserBuildSettings.GetBuildLocation(EditorUserBuildSettings.activeBuildTarget),
EditorUserBuildSettings.activeBuildTarget, BuildOptions.Development);
}
static Quaternion perspectiveRotation = Quaternion.Euler(0, 0, 0);
static bool shouldTween = true;
static private void StorePerspective()
{
if (SceneView.lastActiveSceneView.orthographic == false)
{
perspectiveRotation = SceneView.lastActiveSceneView.rotation;
}
}
static private void ApplyOrthoRotation(Quaternion newRotation)
{
StorePerspective();
SceneView.lastActiveSceneView.orthographic = true;
if (shouldTween)
{
SceneView.lastActiveSceneView.LookAt(SceneView.lastActiveSceneView.pivot, newRotation);
}
else
{
SceneView.lastActiveSceneView.LookAtDirect(SceneView.lastActiveSceneView.pivot, newRotation);
}
SceneView.lastActiveSceneView.Repaint();
}
[MenuItem("Camera/Top &#1")]
static void TopCamera()
{
ApplyOrthoRotation(Quaternion.Euler(90, 0, 0));
}
[MenuItem("Camera/Bottom &#2")]
static void BottomCamera()
{
ApplyOrthoRotation(Quaternion.Euler(-90, 0, 0));
}
[MenuItem("Camera/Left &#3")]
static void LeftCamera()
{
ApplyOrthoRotation(Quaternion.Euler(0, 90, 0));
}
[MenuItem("Camera/Right &#4")]
static void RightCamera()
{
ApplyOrthoRotation(Quaternion.Euler(0, -90, 0));
}
[MenuItem("Camera/Front &#5")]
static void FrontCamera()
{
ApplyOrthoRotation(Quaternion.Euler(0, 0, 0));
}
[MenuItem("Camera/Back &#6")]
static void BackCamera()
{
ApplyOrthoRotation(Quaternion.Euler(0, 180, 0));
}
[MenuItem("Camera/Persp Camera &#7")]
static void PerspCamera()
{
if (SceneView.lastActiveSceneView.camera.orthographic == true)
{
if (shouldTween)
{
SceneView.lastActiveSceneView.LookAt(SceneView.lastActiveSceneView.pivot, perspectiveRotation);
}
else
{
SceneView.lastActiveSceneView.LookAtDirect(SceneView.lastActiveSceneView.pivot, perspectiveRotation);
}
SceneView.lastActiveSceneView.orthographic = false;
SceneView.lastActiveSceneView.Repaint();
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment