1. 程式人生 > >unity3d:編輯器指令碼,替換選中物體的材質

unity3d:編輯器指令碼,替換選中物體的材質

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEditor;
public class ChangeMat : MonoBehaviour {


    [MenuItem("Tools/ChangeNewMat")]
    static void ChangeNewMat()
    {
        GameObject obj = Selection.activeGameObject;
        foreach (Renderer it in obj.transform.GetComponentsInChildren<Renderer>())
        {
            Material mat = AssetDatabase.LoadAssetAtPath<Material>("Assets/ViveJx/Materials/JianXiuBall.mat"
); Material[] bufMat = new Material[it.sharedMaterials.Length]; for (int i = 0; i < it.sharedMaterials.Length; i++) { bufMat[i] = mat; } it.sharedMaterials = bufMat; } } }

Note that like all arrays returned by Unity, this returns a copy of materials array. If you want to change some materials in it, get the value, change an entry and set materials back.
要改變材質陣列,得重新賦值一個數組