Class ReloadGroupAttribute
Attribute specifying that fields of this type should be inspected in depth by the ResourceReloader. If the associated class instance is null, the system attempts to recreate it using its default constructor.
Inherited Members
Namespace: UnityEngine.Rendering
Assembly: Unity.RenderPipelines.Core.Runtime.dll
Syntax
[AttributeUsage(AttributeTargets.Class)]
public sealed class ReloadGroupAttribute : Attribute
Remarks
Make sure classes using it have a default constructor!
Examples
This shows how to use the attribute in the expected scenario. This is particularly useful for content creators. Adding a new field to a class that defines an asset results in null values for existing instances missing the field in their serialized data. Therefore, when a new field is added, a system for reloading null values may be necessary.
using UnityEngine;
using UnityEditor;
[ReloadGroup]
public class MyShaders
{
[Reload("Shaders/Blit.shader")]
public Shader blit;
}
public class MyResourcesAsset : ScriptableObject
{
// Object used for contextualizing would resolve to be null in already existing
// instance of MyResourcesAsset that already exists.
public MyShaders shaders;
[Reload("Textures/BayerMatrix.png")]
public Texture2D bayerMatrixTex;
}
public static class MyResourceHandler
{
public static MyResourcesAsset GetAndReload()
{
var resources = AssetDatabase.LoadAssetAtPath<MyResourcesAsset>("MyResources.asset");
// Ensure that update of the data layout of MyResourcesAsset
// will not result in null value for asset already existing.
// (e.g.: adding new field in MyResourcesAsset or MyShaders classes)
ResourceReloader.ReloadAllNullIn(resources, "Packages/com.my-custom-package/");
return resources;
}
}