Unity Asset Diff

How to Diff Unity Materials and ScriptableObject Assets

A practical guide to reviewing meaningful changes in Unity materials and ScriptableObject assets beyond line-by-line YAML diffs.

Alexandr Rice Follow on X Updated August 27, 2026 4 min read Semantic Diff and History

Identify the asset and comparison source

Unity materials and ScriptableObjects are often text-serialized, but useful review requires more than reading YAML lines. For materials, inspect shaders, keywords, textures, and saved properties. For ScriptableObjects, inspect field paths, values, lists, type information, and resolved asset or object references.

git diff origin/main...HEAD -- Assets/Materials/Rock.mat
git diff origin/main...HEAD -- Assets/Data/EnemyBalance.asset

Confirm that the file is a Unity-created text asset rather than a binary file that happens to use a similar extension. Include its meta file and referenced shaders, textures, scripts, prefabs, or data assets in the review scope.

What to review in a .mat file

  • The shader GUID and whether the intended shader asset still exists.
  • Enabled and disabled shader keywords.
  • Saved texture references and their scale/offset values.
  • Saved float, color, vector, and integer properties.
  • Render queue, instancing, double-sided GI, and other material flags.
  • Properties removed or renamed by a shader change.

A material may remain valid while silently dropping an obsolete property or pointing at a different texture. Resolve references instead of reviewing GUID strings in isolation.

What to review in a ScriptableObject .asset file

  • The m_Script reference and whether its script GUID resolves.
  • Serialized field names, values, enums, and nested data.
  • Array or list additions, removals, and order changes.
  • Managed-reference type information when SerializeReference is used.
  • Cross-asset GUID references and local fileID references.
  • Changes caused by field renames, type migrations, or Unity-version serialization.

Review materials and data assets semantically

MergeSight visual material and ScriptableObject diff supports primary .mat and .asset workflows. It can group material keywords and saved property paths, show ScriptableObject fields, and expose Unity references with GUID/fileID context across working-tree, branch, and commit comparisons.

Use filters to isolate modified properties, references, or a specific asset path when a broad reserialization creates noise.

Common high-risk changes

ChangeWhy it mattersValidation
Shader GUIDCan switch the complete rendering model.Open material and representative renderer.
Texture referenceValid YAML can still point to the wrong asset.Resolve GUID and inspect import settings.
Script GUIDA missing script invalidates ScriptableObject type behavior.Load asset and check Console/import state.
List reorderOrder can be semantically significant even with the same elements.Compare old/new order and consuming code.
Field removalCan be intended migration or silent data loss.Review script changes and migration path.

Validation checklist

  • The material or ScriptableObject imports in the project's Unity version.
  • Shader and script references resolve without missing assets.
  • Texture, prefab, scene, and data references point to intended targets.
  • List order and nested serialized values match runtime expectations.
  • No unrelated mass reserialization hides the reviewed change.
  • Representative consumers render or behave correctly.

FAQ

Can Git diff Unity material files?

Yes, when materials are text-serialized. Git shows YAML lines, while a Unity-aware diff can organize shader, keyword, texture, and saved-property changes.

Can Git diff ScriptableObject assets?

Yes, for text-serialized .asset files. Review the script reference, serialized fields, lists, managed-reference types, and cross-asset references.

Why did a Unity material change after a merge?

The merge may have changed its shader, keywords, render flags, saved property paths, or texture references even if the YAML remained valid.

Does MergeSight support .mat and .asset files?

Yes. Primary support includes text-serialized .mat and .asset files, including material saved properties and ScriptableObject-style serialized data.

Try MergeSight

Review the Unity change, not the YAML noise

Use MergeSight to review material and ScriptableObject changes by properties, references, keywords, and Unity object identity.

Get it on the Asset Store See how MergeSight works