Утечки: картинки глав книги, материал кольца пирамиды, мелочи прилива
- Книга: картинка главы при смене главы не удалялась (~2 МБ за смену) - удаляем сами при смене, у главы без картинки и при закрытии окна. - Пирамида: кольцо зоны создавало новый материал при каждой перезагрузке чанка - теперь один общий. - Прилив: не держать стат игрока после выхода из мира; забывать полосы пересобранного HUD. - SpatialVaultPatch: исправлен устаревший комментарий про очистку кэша. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 5.5
parent
75e122b6a4
commit
7fd0d405cc
+28
-1
@@ -281,6 +281,24 @@ namespace NecromancerTome
|
||||
/// <summary>Показать картинку или видео справа (или убрать обе). Видео задаётся только здесь,
|
||||
/// а не в вёрстке: XUiV_Video сам запускает ролик при открытии окна, и в оглавлении он играл
|
||||
/// бы невидимым. Пустой uri - XUiV_Video.startVideo сам освобождает свою текстуру.</summary>
|
||||
/// <summary>Путь загруженной картинки (null - не загружена). Свой, а не _img.Path - см. ниже.</summary>
|
||||
string _imgPath;
|
||||
|
||||
void ReleaseImage()
|
||||
{
|
||||
if (_img == null || _imgPath == null)
|
||||
{
|
||||
return;
|
||||
}
|
||||
Texture t = _img.Texture;
|
||||
_img.Path = null; // TextureUris = пусто, Texture = null - без выгрузки (autounload выключен)
|
||||
if (t != null)
|
||||
{
|
||||
UnityEngine.Object.Destroy(t);
|
||||
}
|
||||
_imgPath = null;
|
||||
}
|
||||
|
||||
void SetMedia(string _image, string _video, bool _top = false)
|
||||
{
|
||||
bool img = !string.IsNullOrEmpty(_image), vid = !img && !string.IsNullOrEmpty(_video);
|
||||
@@ -289,9 +307,18 @@ namespace NecromancerTome
|
||||
// Без чтения _img.Path: у пустой картинки (в вёрстке texture не задан) его геттер берёт
|
||||
// textureUris[0] из пустого массива - IndexOutOfRange (тест 09.10). Сеттер сам сравнивает
|
||||
// с текущим путём и не перезагружает тот же файл.
|
||||
if (img)
|
||||
// Утечка (проверка 10.10): картинка из файла мода - новая текстура (XUiV_Texture.FetchWwwTexture, клон),
|
||||
// и при смене пути старая сама не удаляется (autounload в вёрстке не включён - в этом режиме игра на
|
||||
// загрузке стирает путь новой картинки). Каждая смена главы оставляла ~2 МБ. Удаляем сами: при смене
|
||||
// картинки, у главы без картинки и при закрытии окна (SetMedia(null, null)).
|
||||
if (_imgPath != _image)
|
||||
{
|
||||
ReleaseImage();
|
||||
}
|
||||
if (img && _imgPath == null)
|
||||
{
|
||||
_img.Path = _image;
|
||||
_imgPath = _image;
|
||||
}
|
||||
_img.IsVisible = img;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user