Unity 6.3
0 онлайн 8 гостей 3 в системе
Вход

AssetDatabase.ForceReserializeAssets

Declaration

public static void ForceReserializeAssets();
public static void ForceReserializeAssets(IEnumerable<string> assetPaths, ForceReserializeAssetsOptions options);

Параметры

Параметр Описание
assetPaths Пути к ассетам, которые должны быть пересерийнизированы.
варианты Укажите, хотите ли вы пересерийнизовать сами ассеты, их файлы .meta или оба. Если этот параметр опущен, по умолчанию используются оба.

Описание

Принудительная загрузка и повторная серийнизация данных ассетов, сброс любых оставшихся изменений данных на диск.

Когда Unity загружает старые данные из ассета или Scene файл, данные динамически обновляются в памяти, но не записываются обратно на диск, если пользователь не делает что-то, что явно загрязняет объект (например, изменяет значение на нем). Этот метод позволяет проактивно загружать, обновлять и записывать обратно на диск любой ассет или Scene файлов в проекте, не приходя вручную загрязнять их.

UnityОбычное поведение имеет ряд преимуществ, особенно для проектов с системами управления версиями, где обновление всех ассетов после перехода на новую версию Unity Этот метод позволяет вам быть проактивным в контролируемом порядке, решая точно, какие ассеты вы хотите обновить и когда. Этот метод позволяет вам быть проактивным в контролируемом порядке, решая точно, какие ассеты вы хотите обновить и когда. Это позволяет вам быть проактивным в контролируемом порядке, решая точно, какие ассеты вы хотите обновить и когда.

Примечание: Этот метод следует вызывать только из прямых действий пользователя, таких как пункт меню. Не следует вызывать ForceReserializeAssets от Unity обратный вызов (например, OnEnable), потому что она может быть вызвана во время модификации сцены. Если вы сделаете это, Unity бросает исключение.

using UnityEditor;
using UnityEngine;

public class AssetDatabaseExamples : MonoBehaviour { [MenuItem("AssetDatabase/Force Reserialize Assets Example")] static void UpdateGroundMaterials() { for (var i = 0; i < 10; i++) { var matPath = $"Assets/Materials/GroundMaterial{i}.mat"; var mat = (Material)AssetDatabase.LoadMainAssetAtPath(matPath); AssetImporter.GetAtPath(matPath).SetAssetBundleNameAndVariant("GroundBundle", ""); mat.shader = Shader.Find("Standard"); mat.color = Color.white; mat.mainTexture = (Texture)AssetDatabase.LoadMainAssetAtPath($"Assets/Textures/GroundTexture{i}.jpg"); } AssetDatabase.ForceReserializeAssets();

} }