【问题标题】:Unity - Custom Editor - data refreshUnity - 自定义编辑器 - 数据刷新
【发布时间】:2020-09-01 08:44:08
【问题描述】:

我在编辑器中创建了一个新窗口。它用于调试和创建一些小型测试场景。例如,减少或增加敌人的HP,减少资源等。 在OnGUI 方法中 - 我创建了一个循环遍历对手列表并收集有关生命值、弹药等的信息。通过GUILayout.Label 我显示此信息。 不幸的是,这些数据不会动态刷新。每隔几秒钟或点击窗口。 我不知道我是否很好地使用了这个编辑器。但我希望有一个部分,这些数据将为我动态刷新 - 并将成为 UnityEditor 的 UI 的一部分,而不是游戏本身。

【问题讨论】:

  • 您能否展示一下您的编辑器窗口的代码以及您目前如何进行刷新?

标签: unity3d unity-editor


【解决方案1】:

你可以使用Update

在所有可见窗口上每秒调用多次。

喜欢

private void Update()
{
    Repaint();
}

这可能会变得相当昂贵,我认为您也可以使用OnInspectorUpdate

OnInspectorUpdate 以每秒 10 帧的速度调用,以便检查员有机会更新。

就像例子中的:

void OnInspectorUpdate()
{
    // Call Repaint on OnInspectorUpdate as it repaints the windows
    // less times as if it was OnGUI/Update
    Repaint();
}

所以它只能以 10 帧/秒的速度运行,但如果你不这样做,它也会连续运行,例如移动鼠标。

Repaint 基本上强制运行新的OnGUI

【讨论】:

    【解决方案2】:

    您可以使用OnInsepctorUpdate(),或者如果您想要与您的游戏运行速度相同的东西,您可以在Update() 方法中调用Repaint()

    // This will update your GUI on every frame.
    private void Update() => Repaint();
    

    【讨论】:

    • 感谢您的回复。我的速记很好。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多