簡體   English   中英

僅當我將鼠標懸停在場景或游戲視圖上時,小控件才會更新

[英]Gizmos only update when I hover over the scene or game view

我有一個腳本:

//Assets/TestScript.cs
using UnityEngine;

public class TestScript : MonoBehaviour
{
    public Vector2 a;
    public Vector2 b;
    public Vector2 c;
}

它是編輯器腳本:

//Assets/Editor/TestEditor.cs
using UnityEngine;
using UnityEditor;

[CustomEditor(typeof(TestScript))]
public class TestEditor : Editor
{
    public override void OnInspectorGUI()
    {
        TestScript script = (TestScript)target;

        script.a = EditorGUILayout.Vector2Field("a", script.a);
        script.b = EditorGUILayout.Vector2Field("b", script.b);
        script.c = EditorGUILayout.Vector2Field("c", script.c);
    }

    [DrawGizmo(GizmoType.Active | GizmoType.Selected)]
    static void DrawGizmos(TestScript script, GizmoType gizmoType)
    {
        Gizmos.DrawWireSphere(script.a, 1.0f);
        Gizmos.DrawWireSphere(script.b, 1.0f);
        Gizmos.DrawWireSphere(script.c, 1.0f);
    }
}

它可以正確顯示線球小控件,但是當我編輯變量abc ,除非將鼠標移到場景視圖或游戲視圖上,否則小控件不會重繪。 即使如此,它仍然需要大約一秒鍾的時間。

當我刪除重寫的OnInspectorGui()方法時,小控件將正確更新。

我嘗試將SceneView.RepaintAll()HandleUtility.RepaintRepaint()OnInspectorGui()方法的開頭和結尾,但沒有任何更改。

謝謝。

有人在reddit上給了我答案。

SceneView.RepaintAll()方法將僅更新場景視圖,而UnityEditorInternal.InternalEditorUtility.RepaintAllViews()將更新所有視圖。

更新的OnInspectorGUI()重寫方法現在看起來像這樣:

public override void OnInspectorGUI()
{
    TestScript script = (TestScript)target;

    script.a = EditorGUILayout.Vector2Field("a", script.a);
    script.b = EditorGUILayout.Vector2Field("b", script.b);
    script.c = EditorGUILayout.Vector2Field("c", script.c);

    if(Gui.changed)
        UnityEditorInternal.InternalEditorUtility.RepaintAllViews();
}

首先,您應該創建一個EditorWindow

在這里看到它: http : //docs.unity3d.com/ScriptReference/EditorWindow-autoRepaintOnSceneChange.html

所有EditorWindows都具有以下屬性: autoRepaintOnSceneChange

您可以將其設置為true,並在某些更改后重新繪制窗口。 您也可以在editorWindow的Update()中手動調用Repaint()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM