Страница 1 из 2

Поменять у камеры редактора farClipPlane

СообщениеДобавлено: 15 сен 2014, 11:05
Diab10
Всем привет.
Реально ли у камеры редактора поменять farClipPlane ?
Пробовал так, не меняет:
Синтаксис:
Используется csharp
SceneView.lastActiveSceneView.camera.farClipPlane = 500f;



Гуглил... гуглил... - не гуглится :(

Re: Поменять у камеры редактора farClipPlane

СообщениеДобавлено: 16 сен 2014, 16:39
Diab10
Ап (popcorn1)

Re: Поменять у камеры редактора farClipPlane

СообщениеДобавлено: 17 сен 2014, 09:11
OlegNick
Camera.current.
Когда мне надо было "достать" камеру сцены я использовал это.

Re: Поменять у камеры редактора farClipPlane

СообщениеДобавлено: 17 сен 2014, 11:41
lwe
Камера и SceneView разные вещи

Re: Поменять у камеры редактора farClipPlane

СообщениеДобавлено: 17 сен 2014, 21:11
OlegNick
Я где то сказал что это одно и то же?
--------
Еще может быть SceneView.currentDrawingSceneView.camera

Re: Поменять у камеры редактора farClipPlane

СообщениеДобавлено: 17 сен 2014, 21:59
lwe
OlegNick писал(а):Я где то сказал что это одно и то же?
--------
Еще может быть SceneView.currentDrawingSceneView.camera

Когда мне надо было "достать" камеру сцены я использовал это.

Camera.current - возвращает камеру сцены?

Re: Поменять у камеры редактора farClipPlane

СообщениеДобавлено: 17 сен 2014, 22:27
OlegNick
Синтаксис:
Используется csharp
using UnityEngine;
using System.Collections;
[ExecuteInEditMode]
public class Test : MonoBehaviour
{

    void Start()
    {

    }

    void Update()
    {
        print(Camera.current);
    }
}

Re: Поменять у камеры редактора farClipPlane

СообщениеДобавлено: 17 сен 2014, 23:12
lwe
пфф... ладно забудьте.

Re: Поменять у камеры редактора farClipPlane

СообщениеДобавлено: 17 сен 2014, 23:53
OlegNick
lwe писал(а):пфф...

Ну да, согласен, весомый аргумент.

Re: Поменять у камеры редактора farClipPlane

СообщениеДобавлено: 18 сен 2014, 01:05
lwe
OlegNick писал(а):
lwe писал(а):пфф...

Ну да, согласен, весомый аргумент.

Тогда объясните мне как вы собираетесь управлять SceneView через камеру.

Re: Поменять у камеры редактора farClipPlane

СообщениеДобавлено: 18 сен 2014, 10:58
OlegNick
Зачем мне ей управлять если ТС просто нужна ссылка на камеру сцены чтобы поменять в ней одну переменную.

Re: Поменять у камеры редактора farClipPlane

СообщениеДобавлено: 18 сен 2014, 19:23
waruiyume
Меня смутил этот спор и я решил посмотреть сам. Так вот, камеру то, мы получить можем, а вот, изменить её параметры, нет. Логично было бы предположить, что настройки камеры затираются SceneView`ом. Следовательно, нужно изменять настройки камеры, только после того, как отработает SceneView. А вот, как определить этот момент, я не знаю.

Re: Поменять у камеры редактора farClipPlane

СообщениеДобавлено: 18 сен 2014, 20:12
Diab10
Наверно этого сделать нельзя, жаль :(
Всем спасибо за помощь :)

Re: Поменять у камеры редактора farClipPlane

СообщениеДобавлено: 18 сен 2014, 20:13
OlegNick
Синтаксис:
Используется csharp
using UnityEngine;
using UnityEditor;
using System.Collections;

[CustomEditor(typeof(SomeScript))]
public class SomeScriptEditor : Editor
{
    void OnSceneGUI()
    {
        SceneView.currentDrawingSceneView.camera.nearClipPlane = 1000f;
    }
}

По скрину видно, что nearClipPlane изменился, но он сработал только на маркер поворота(не знаю как назвать).

Re: Поменять у камеры редактора farClipPlane

СообщениеДобавлено: 18 сен 2014, 21:27
Neyl
В Editor есть недокументированный метод OnPreSceneGUI, он вызывается после задания настроек камеры, но до рендера сцены.
Синтаксис:
Используется csharp
using UnityEngine;
using UnityEditor;

[CustomEditor(typeof(SomeScript))]
public class SomeScriptEditor : Editor
{
    private float m_nearClipPlane = 0.05f;
    private float m_farClipPlane = 1000f;

    void OnPreSceneGUI()
    {
        if (SceneView.currentDrawingSceneView != null && SceneView.currentDrawingSceneView.camera !=null)
        {
            SceneView.currentDrawingSceneView.camera.nearClipPlane = m_nearClipPlane;
            SceneView.currentDrawingSceneView.camera.farClipPlane = m_farClipPlane;
        }
    }

    public override void OnInspectorGUI()
    {
        m_nearClipPlane = EditorGUILayout.FloatField("Near clip plane", m_nearClipPlane);
        m_farClipPlane = EditorGUILayout.FloatField("Far clip plane", m_farClipPlane);

        if(GUI.changed && SceneView.currentDrawingSceneView != null)
        {
            SceneView.currentDrawingSceneView.Repaint();
        }
    }
}