Unity - 实例化gameObject后重新绘制场景/重绘场景

3

Unity: 5.1.1f

语言: c#

当我在Assets/Editor/文件夹中实例化一个gameObject时,它不会出现在场景中,直到我选择另一个场景的gameobject。

我已经尝试调用了一些方法,如:

SceneView.RepaintAll();
HandleUtility.Repaint();

但是它们都没有起作用。这是我生成对象的方式:

public class PrefabEditor: Editor {
    void OnSceneGUI() {
        GameObject prefabInstance = Instantiate(prefab) as GameObject;

        // assign him an icon label
        Texture2D tex = EditorGUIUtility.IconContent("sv_label_0").image as Texture2D;
        Type editorGUIUtilityType = typeof(EditorGUIUtility);
        BindingFlags bindingFlags = BindingFlags.InvokeMethod | BindingFlags.Static | BindingFlags.NonPublic;
        object[] args = new object[] {
            prefabInstance, tex
        };
        editorGUIUtilityType.InvokeMember("SetIconForObject", bindingFlags, null, null, args);

        EditorUtility.SetDirty(prefabInstance);
    }
}
1个回答

2
我相信您正在使用Editor类,而不是实例化游戏对象,例如:
GameObject prefabInstance = Instantiate(prefab) as GameObject;

实例化您的游戏对象可以像这样进行。
GameObject prefabInstance = (GameObject) PrefabUtility.InstantiatePrefab(prefab);

并尝试使用

SceneView.lastActiveSceneView.Repaint();

我希望这可以帮到您。
注:保留 HTML 标签。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接