2016-08-30 6 views
-1

シーンやゲームビューにカーソルを合わせると更新:ギズモだけ私はスクリプト持っ

//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); 
    } 
} 

を、それが正しくワイヤー球ギズモを示すが、ときに私変数abまたはcを編集します。マウスをシーンビューまたはゲームビューの上に移動しない限り、ギズモは再描画されません。そしてそれでも約1秒かかります。

オーバーライドされたOnInspectorGui()メソッドを削除すると、ギズモが正しく更新されます。

OnInspectorGui()メソッドの最初と最後にSceneView.RepaintAll(),HandleUtility.RepaintRepaint()を追加しようとしましたが、何も変更されませんでした。

ありがとうございます。あなたはそれが本当autoRepaintOnSceneChange

設定することができ、そして:は、次のプロパティを持っているhttp://docs.unity3d.com/ScriptReference/EditorWindow-autoRepaintOnSceneChange.html

すべてEditorWindows:

答えて

0

誰かが私に答えを示しました。

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(); 
} 
0

最初に、あなたはここでそれを見るEditorWindow

を作成する必要があります何かが変更されたときにウィンドウを再描画します。 editorWindowのUpdate()にRepaint()を手動で呼び出すこともできます

関連する問題