Unity - 在游戏对象实例化后重绘/重绘场景

本文关键字:实例化 游戏 对象 Unity | 更新日期: 2023-09-27 18:05:52

Unity: 5.1.1f

语言: c#

当我在资产/编辑器/文件中实例化游戏对象时,在我选择另一个场景的游戏对象之前,它不会出现在场景中。

我尝试调用一些方法,例如:

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

Unity - 在游戏对象实例化后重绘/重绘场景

我相信

您正在使用编辑器类,而不是像

GameObject prefabInstance = Instantiate(prefab) as GameObject;

像这样实例化游戏对象

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

并尝试使用

SceneView.lastActiveSceneView.Repaint();

我希望这有所帮助。