Use this class to implement specialized versions of the built-in transform tools. Built-in transform tools include Move, Rotate, Scale, Rect, and Transform.
using System; using System.Collections.Generic; using UnityEditor; using UnityEditor.EditorTools; using UnityEngine; // EditorToolContextAttribute is what registers a context with the UI. [EditorToolContext("Wobbly Transform Tools")] // The icon path can also be used with packages. Ex "Packages/com.wobblestudio.wobblytools/Icons/Transform.png". [Icon("Assets/Examples/Icons/TransformIcon.png")] public class WobbleContext : EditorToolContext { // Tool contexts can also implement an OnToolGUI function that is invoked before tools. This is a good place to // add any custom selection logic, for example. public override void OnToolGUI(EditorWindow _) { } protected override Type GetEditorToolType(Tool tool) { switch (tool) { // Return the type of tool to be used for Tool.Move. The Tool Manager will handle instantiating and // activating the tool. case Tool.Move: return typeof(WobblyMoveTool); // For any tools that are not implemented, return null to disable the tool in the menu. default: return null; } } } // Note that tools used by an EditorToolContext do not need to use EditorToolAttribute. class WobblyMoveTool : EditorTool { struct Selected { public Transform transform; public Vector3 localScale; } Vector3 m_Origin; List<Selected> m_Selected = new List<Selected>(); void StartMove(Vector3 origin) { m_Origin = origin; m_Selected.Clear(); foreach(var trs in Selection.transforms) m_Selected.Add(new Selected() { transform = trs, localScale = trs.localScale }); Undo.RecordObjects(Selection.transforms, "Wobble Move Tool"); } // This is silly example that oscillates the scale of the selected objects as they are moved. public override void OnToolGUI(EditorWindow _) { var evt = Event.current.type; var hot = GUIUtility.hotControl; EditorGUI.BeginChangeCheck(); var p = Handles.PositionHandle(Tools.handlePosition, Tools.handleRotation); if (evt == EventType.MouseDown && hot != GUIUtility.hotControl) StartMove(p); if (EditorGUI.EndChangeCheck()) { foreach (var selected in m_Selected) { selected.transform.position += (p - Tools.handlePosition); var scale = Vector3.one * (Mathf.Sin(Mathf.Abs(Vector3.Distance(m_Origin, p))) * .5f); selected.transform.localScale = selected.localScale + scale; } } } }
GetAdditionalToolTypes | Get an additional collection of tools to display in the same category as the built-in transform tools. |
OnActivated | Invoked after this EditorToolContext becomes the active tool context. |
OnToolGUI | Implements any common functionality for the set of manipulation tools available for this context. |
OnWillBeDeactivated | Invoked before this EditorToolContext stops being the active tool context. |
ResolveTool | Returns the matching EditorTool type for the specified Tool given the context. |
GetEditorToolType | Defines the EditorTool type for a given Tool. |
hideFlags | Should the object be hidden, saved with the Scene or modifiable by the user? |
name | オブジェクト名 |
GetInstanceID | Gets the instance ID of the object. |
ToString | Returns the name of the object. |
Destroy | Removes a GameObject, component or asset. |
DestroyImmediate | Destroys the object obj immediately. You are strongly recommended to use Destroy instead. |
DontDestroyOnLoad | Do not destroy the target Object when loading a new Scene. |
FindAnyObjectByType | Retrieves any active loaded object of Type type. |
FindFirstObjectByType | Retrieves the first active loaded object of Type type. |
FindObjectsByType | Retrieves a list of all loaded objects of Type type. |
Instantiate | original のオブジェクトをクローンします |
CreateInstance | ScriptableObject のインスタンスを作成します。 |
bool | オブジェクトが存在するかどうか |
operator != | 二つのオブジェクトが異なるオブジェクトを参照しているか比較します |
operator == | 2つのオブジェクト参照が同じオブジェクトを参照しているか比較します。 |
Awake | ScriptableObject スクリプトを開始するとき、この関数は呼び出されます。 |
OnDestroy | ScriptableObject が破棄されるとき、この関数は呼び出されます。 |
OnDisable | ScriptableObject クラスのオブジェクトがスコープを外れるとき、この関数は呼び出されます。 |
OnEnable | オブジェクトがロードされたとき、この関数は呼び出されます。 |
OnValidate | Editor-only function that Unity calls when the script is loaded or a value changes in the Inspector. |
Reset | デフォルト値にリセットします |