Редактировать: На самом деле выяснилось, что вам нужно использовать SceneView.lastActiveSceneView.camera в качестве камеры, и вы можете использовать Gizmos.DrawMesh () для рисования сетки вместо создания экземпляров ..
Есть такжеSceneView.OnSceneGUIDelegate, который может помочь вам получить доступ к представлению сцены.
Вот пример кода о том, как настроить
void OnGUI() {
if (objectThatFollowsMouse != null) {
SceneView.onSceneGUIDelegate -= OnSceneGUI;
SceneView.onSceneGUIDelegate += OnSceneGUI;
}
else { SceneView.onSceneGUIDelegate -= OnSceneGUI; }
}
void OnSceneGUI(SceneView sceneView) {
...
}
с помощью некоторых дополнительных сценариев редактора, вы можете сделать что-то вроде этого
Vector3 mousePoint = Camera.main.ViewportToWorldPoint(Input.mousePosition);
if (objectShouldFollowMouse) {
objectThatFollowsMouse.transform.position = mousePoint;
if (Event.current.type == EventType.MouseUp) {
objectShouldFollowMouse = false;
objectThatFollowsMouse = null;
}
}
if (prefabGotClicked) {
GameObject obj = Object.Instantiate(someObject,mousePoint,Quaternion.identity) as GameObject;
objectShouldFollowMouse = true;
objectThatFollowsMouse = obj;
}