我使用这个方法在不再需要Prefab(弹出窗口)时卸载贴图:
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将在访问该资产时从磁盘重新加载该资产。
我做错了什么?