当我不再需要预制件(是一个弹出窗口)时,我正在使用它来卸载纹理:
UISprite[] widgets = gameObject.GetComponentsInChildren<UISprite>(true);
for (int i = 0, imax = widgets.Length; i < imax; i++)
{
UISprite w = widgets[i];
Debug.Log ("Removing: " + w.gameObject.name);
if (w.mainTexture)
{
Debug.Log ("Removing: " + w.mainTexture.name);
Resources.UnloadAsset(w.mainTexture);
}
}
正如我所看到的,这是有效的,因为在卸载后,Texture2Ds 不再显示在分析器中。但问题是,当我再次实例化弹出窗口时,精灵显示为白色框。因此,它们不会像文档中所说的那样在需要时重新加载:如果场景中的游戏对象对资产有任何引用并且正在使用它,那么 Unity 将在访问资产后立即从磁盘重新加载资产。
我做错了什么?