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

标签 c# unity3d instantiation redraw

统一:5.1.1f

语言:c#

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

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

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

最佳答案

我相信您正在使用 Editor 类,而不是像实例化您的游戏对象

GameObject prefabInstance = Instantiate(prefab) as GameObject;

像这样实例化你的游戏对象

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

并尝试使用

SceneView.lastActiveSceneView.Repaint();

希望对您有所帮助。

关于c# - Unity - 在游戏对象实例化后重绘/重绘场景,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31753865/

相关文章:

c# - INSERT查询显示插入数据但实际上没有插入数据

c# - C# 控制台应用程序可以在没有 Mono 的 Linux 中运行吗?

c# - 统一: Record video from device camera

ios - Swift:解雇ViewController并实例化另一个ViewController

java - 不将对象的实例分配给变量是不好的做法吗?

java - 无法在 Switch 语句中实例化字符串数组 - Java

c# - 为多个ASP.NET用户缓存WCF ChannelFactories

c# - 'var' 的目的是什么?

c# - Unity WaitForSeconds 不工作 c#

c# - 在编辑器 session 之间存储编辑器值