【Unity】Spine に適用されているマテリアルを上書きする

DEVELOP, Unity

目次

上書き

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();

※生成したマテリアルは破棄すること。

Posted by kazupon