首页 文章

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

提问于
浏览
1

Unity :5.1.1f

Language :c#

当我在Assets / Editor /文件中实例化gameObject时,在我选择另一个场景的gameobject之前它不会出现在Scene中 .

我试过调用一些方法,比如:

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 回答

  • 1

    我相信你正在使用Editor类,而不是实例化你的gameObject

    GameObject prefabInstance = Instantiate(prefab) as GameObject;
    

    像这样实例化你的gameObject

    GameObject prefabInstance = (GameObject) PrefabUtility.InstantiatePrefab(prefab);
    

    并尝试使用

    SceneView.lastActiveSceneView.Repaint();
    

    我希望这有帮助 .

相关问题