protected override void OnDestroy()
    {
        SpriteSheetSharedMaterials.UnregisterSpriteSheetSharedMaterialChangeEvent(OnSpriteSheetSharedMaterialChange);

        materialBuffer.Clear();
        base.OnDestroy();
    }
    protected override void OnCreate()
    {
        base.OnCreate();
        defaultMaterial                  = new Material(Shader.Find("Custom/InstancedShader"));
        defaultMaterial.hideFlags        = HideFlags.HideAndDontSave;
        defaultMaterial.enableInstancing = true;

        materialPropertyBlock = new MaterialPropertyBlock();
        sharedPropertyId      = Shader.PropertyToID("_MainTex_UV");

        SpriteSheetSharedMaterials.RegisterSpriteSheetSharedMaterialChangeEvent(OnSpriteSheetSharedMaterialChange);
    }