Hi there…
I Want to write my own Tilemap Editor.
Now i need the Scene View to show the Map as i want:
Orthographic, Topdwon, with a Camera Y position of 256.
I managed to do the Rotation and orthographic.
Now…:
1.) How can i change the position of the Scene View Camera, to show my Map Topdown. Means… On Y position 256? It would be enough to set the Scene View to it´s “TOP” Setting from the Scene Gizmo…
2.) How to Set this options (including rotation and orthographic), everytime it gets changed? Cause OnGUI and OnSceneGUI only refresh the code, when clicking on them ._.?
I´m hoping for some answers
Hey there,
A very late answer, but I was looking for something similar myself. Now I’ve found it I’ll share the solution so someone else might find it and benefit from it.
In my case I wanted the gameObject to stay selected while holding down CTRL/Control and even though I left clicked in different places in the sceneview, I also wanted to go into my “edit” mode while holding down CTRL.
private void OnSceneGUI()
{
Event e = Event.current;
// We're holding down CTRL
if (e.control)
{
// Used to change inspectorGUI
_holdingControlDown = true;
// Makes sure to save the current camera position, rotation and orthographic setting
if(_cameraPositionBeforeEditMode == Vector3.zero)
{
_cameraOrthoBeforeEditMode = SceneView.lastActiveSceneView.orthographic;
_cameraRotBeforeEditMode = SceneView.lastActiveSceneView.rotation;
_cameraPositionBeforeEditMode = SceneView.lastActiveSceneView.pivot;
Vector3 newPivot = new Vector3(
accessableGridRef.transform.position.x,
accessableGridRef.transform.position.y + 100f,
accessableGridRef.transform.position.z);
SceneView.lastActiveSceneView.pivot = newPivot;
}
// Removes the default "handle" from Unity's tools
if (Tools.current != Tool.None)
{
_lastTool = Tools.current;
Tools.current = Tool.None;
}
// If the user holds down ctrl while clicking with left mouse button
if (e.isMouse && e.button == 0 && e.type == EventType.mouseDown)
{
Debug.Log("Pressed left mouse button while holding ctrl");
// I'm going to change some stuff here later.
}
// Set camera to iso from top point
SceneView.lastActiveSceneView.orthographic = true;
SceneView.lastActiveSceneView.rotation = Quaternion.Euler(90, 0, 0);
// You can also set position here by going:
// SceneView.lastActiveSceneView.pivot = new Vector3();
// Keep selection of Level, no matter what I click in the sceneView
Selection.activeGameObject = accessableGridRef.gameObject;
// If we let go of CTRL, remember to debrief everything and put stuff back to "normal"
_debriefEditorMode = true;
}
else
{
// Resets everything back to the view it had before
if (_debriefEditorMode)
{
_holdingControlDown = false;
if (Tools.current == Tool.None)
{
Tools.current = _lastTool;
}
SceneView.lastActiveSceneView.rotation = _cameraRotBeforeEditMode;
SceneView.lastActiveSceneView.orthographic = _cameraOrthoBeforeEditMode;
SceneView.lastActiveSceneView.pivot = _cameraPositionBeforeEditMode;
_cameraPositionBeforeEditMode = Vector3.zero;
SceneView.lastActiveSceneView.Repaint();
_debriefEditorMode = false;
}
}
}