我目前正在Unity中开发自定义EditorWindow
扩展名。
我已覆盖Update()
函数,当满足某些条件时,我调用Repaint();
方法来相应地更新UI。
public class MyAwesomePlugin : EditorWindow
{
...
public void Update()
{
if (condition_1())
{
...
Repaint();
}
if (condition_2())
{
...
Repaint();
}
}
}
我的问题是,在同一执行时间范围内多次调用Repaint();
是否会导致多次重复重画,或者Unity是否足够聪明来聚合它们并只重画一次。
答案 0 :(得分:1)
创建并设置标志变量bool isDirty = false
会更好。
public void Update()
{
bool isDirty = false;
if (condition_1())
{
...
isDirty = true;
}
if (condition_2())
{
...
isDirty = true;
}
if (isDirty) Repaint();
}
这绕过了问题,但是任何不必要的函数调用都会对性能产生不利影响。
如果return
中有Update
条语句,可以将isDirty
设置为True
之后,将if (isDirty) Repaint();
放在return
之前。 / p>