SetAllDirty()在Unity中无法在运行时运行?

时间:2018-03-27 15:10:13

标签: unity3d

修改

在做了一些调试之后,我发现只有当我开始游戏并且它所在的面板/画布被禁用时它才起作用。如果我一直启用面板/画布,那么它会正确重绘。但是,这显然不是一个合适的解决方案,因为我无法在测验结束前显示结果。我需要禁用该面板,以便我可以在测验结束后稍后显示。这是否有原因发生?我该如何解决这个问题?

结束修改

所以我在GitHub上发现了一个基本上创建UI多边形的脚本。它在编辑器中运行良好,但是,我想在运行时修改它。从我阅读的所有内容中,我需要做的就是调用方法SetAllDirty(),它将更新MaskableGraphic并重绘它。但是,每当我打电话时,都没有任何反应。 SetVerticesDirty()也没有用。有人能看到我在这里出错的地方。

我正在做的就是调用DrawPolygon并给它4 sides,并传递float[5]我修改了它,以便在我完成设置新变量后立即调用{{1} }}

这样的事情:

SetAllDirty()

就像我说的,它在编辑器中运行良好(不是运行时),我也正确地获取了所有传递给脚本的值(在运行时),但它没有重绘。一旦我在检查器中操作某些东西,它就会重绘为正确的形状。

脚本的其余部分发布在这里:

https://github.com/CiaccoDavide/Unity-UI-Polygon/blob/master/UIPolygon.cs

这是我在Manager脚本上调用public void DrawPolygon(int _sides, float[] _VerticesDistances) { sides = _sides; VerticesDistances = _VerticesDistances; rotation = 0; SetAllDirty(); } 的方法。我在日志中看到它打印出语句,Quiz已经结束。

DrawPolygon

0 个答案:

没有答案