CoplayDev/unity-mcp · error · ArgumentException

Chunk size must be larger than 0

Error message

Chunk size must be larger than 0

What it means

Thrown by NativePreviewGenerator.Validate() (NativePreviewGenerator.cs:39) when NativePreviewGenerationSettings.ChunkSize <= 0. ChunkSize controls batch sizing: WaitAndWritePreviewsChunked divides objects.Count by ChunkSize, and WaitAndWritePreviewIteration sizes the AssetPreview texture cache as ChunkSize*2. Zero/negative would cause a division/loop defect and a useless cache size. Thrown before GenerateImpl() and outside its try/catch, so it surfaces as an uncaught ArgumentException.

Source

Thrown at TestProjects/AssetStoreUploads/Packages/com.unity.asset-store-tools/Editor/Previews/Scripts/Generators/NativePreviewGenerator.cs:39

        private RenderTexture _renderTexture;

        private int _generatedPreviewsCount;
        private int _totalPreviewsCount;

        public override event Action<float> OnProgressChanged;

        public NativePreviewGenerator(NativePreviewGenerationSettings settings)
            : base(settings)
        {
            _nativeSettings = settings;
        }

        protected override void Validate()
        {
            base.Validate();

            if (_nativeSettings.ChunkSize <= 0)
                throw new ArgumentException("Chunk size must be larger than 0");
        }

        protected override async Task<PreviewGenerationResult> GenerateImpl()
        {
            var result = new PreviewGenerationResult()
            {
                GenerationType = _nativeSettings.GenerationType
            };

            OnProgressChanged?.Invoke(0f);

            try
            {
                var objects = GetObjectsRequiringPreviews(_nativeSettings.InputPaths);
                var filteredObjects = new List<PreviewMetadata>();
                var reusedPreviews = new List<PreviewMetadata>();
                FilterObjects(objects, filteredObjects, reusedPreviews);

View on GitHub (pinned to c21bf496bc)

Solutions

  1. Set NativePreviewGenerationSettings.ChunkSize to a positive value (e.g. 50 or 100) before Generate().
  2. Initialize ChunkSize together with WaitForPreviews and ChunkedPreviewLoading at construction.
  3. Confirm the chunk size field in the Preview Generator window (native mode) before generating.

Example fix

// before
var settings = new NativePreviewGenerationSettings { InputPaths = paths, OutputPath = outPath /* ChunkSize = 0 */ };
await new NativePreviewGenerator(settings).Generate(); // throws

// after
var settings = new NativePreviewGenerationSettings { InputPaths = paths, OutputPath = outPath, ChunkSize = 100 };
await new NativePreviewGenerator(settings).Generate();
Defensive patterns

Strategy: validation

Validate before calling

var s = settings as NativePreviewGenerationSettings;
if (s != null && s.ChunkSize <= 0)
    throw new InvalidOperationException("NativePreviewGenerationSettings.ChunkSize must be > 0 before generating previews.");

Type guard

static bool HasValidChunkSize(NativePreviewGenerationSettings s) => s != null && s.ChunkSize > 0;

Try / catch

try { await generator.Generate(); }
catch (ArgumentException ex) when (ex.Message.Contains("Chunk size")) { /* report invalid chunk size */ }

Prevention

When it happens

Trigger: Calling Generate() on a NativePreviewGenerator whose ChunkSize is at its default 0 or explicitly <= 0. Triggered whenever the native generator is used, because Validate() checks ChunkSize unconditionally (not only when ChunkedPreviewLoading is true).

Common situations: Constructing NativePreviewGenerationSettings without setting ChunkSize (int default 0); assuming ChunkSize only matters when ChunkedPreviewLoading is enabled and leaving it 0 in the non-chunked path.

Related errors


AI-assisted analysis of CoplayDev/unity-mcp@c21bf496bc (2026-08-13). Data as JSON: /api/errors/316a1bb392829950. Report an issue: GitHub.