private void OnSceneGUI() { var graph = (GridGraph)target; float size = HandleUtility.GetHandleSize(graph.transform.position) * 5f; float snap = 0.1f; EditorGUI.BeginChangeCheck(); Handles.color = Color.yellow; float plusX = Handles.ScaleValueHandle(graph.transform.localScale.x / 2, graph.transform.position + graph.transform.right * graph.transform.localScale.x / 2, Quaternion.LookRotation(graph.transform.right), size, Handles.ArrowHandleCap, snap); if (EditorGUI.EndChangeCheck()) { Undo.RecordObject(graph, "Scaling graph."); float diff = plusX - graph.transform.localScale.x / 2; graph.transform.position += graph.transform.right * diff; graph.transform.localScale += Vector3.right * diff * 2; } }