【Unity】Spine に適用されているマテリアルを上書きする
目次
上書き
private void ChangeShader(Shader _overrideShader)
{
var atlasAssetsList = skeletonDataAsset.atlasAssets;
foreach(var spineAtlasAsset in atlasAssetsList)
{
var asset = (SpineAtlasAsset)spineAtlasAsset;
foreach(var mat in asset.materials)
{
// マテリアル生成。
var overrideMaterial = new Material(_overrideShader);
// 元のマテリアルの設定値をコピー。
overrideMaterial.CopyPropertiesFromMaterial(mat);
// 適用する。
skeletonAnimation.CustomMaterialOverride[mat] = overrideMaterial;
}
}
}
上書きリセット
skeletonAnimation.CustomMaterialOverride.Clear();
※生成したマテリアルは破棄すること。