【发布时间】:2020-09-09 13:23:22
【问题描述】:
我正在 Unity 中实例化一个 UI 图像预制件并设置它的颜色,但它不起作用。
这是我的代码:
public class Test
{
public ImageInitializer pImage;
private void Start()
{
var temp = Instantiate(pImage, GameObject.FindObjectOfType<Canvas>().transform);
temp.Selectable = false;
temp.Color = Color.red;
}
}
public class ImageInitializer : MonoBehaviour
{
public Image image;
public Selectable selectable;
public bool Selectable
{
set => selectable.enabled = value;
}
public Color Color
{
set => image.color = value;
}
}
预制件只是一个简单的 UI 按钮,上面有 ImageInitializer 脚本。
但它没有设置颜色。其实image组件的颜色已经设置好了,但是还是使用了selectable的正常颜色。如果我在编辑器中打开和关闭它,一切正常。
你知道为什么它不更新图像吗?
===编辑===
到目前为止,我尝试了LayoutRebuilder.ForceRebuildLayoutImmediate(temp.transform as RectTransform) 和temp.image.SetAllDirty() 以及禁用Selectable 的协程,等待一帧并设置颜色。
没有任何效果...
【问题讨论】:
标签: c# unity3d user-interface