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