「毎日Unity」の技術ブログ

開発で役立つ情報を発信する

【Unity】プレハブのマテリアルを設定できない時の解決方法

下記のエラーがでコンソールに出てプレハブのマテリアルを設定できない時の解決方法を紹介します。

Not allowed to access Renderer.material on prefab object. Use Renderer.sharedMaterial instead
UnityEngine.Renderer:get_material ()

[ 解決方法 ]

このエラーは、Resourcesにあるプレハブをインスタンス化する前にそのプレハブのマテリアルを設定しようとすると発生します。
解決方法は簡単で、インスタンス化してからマテリアルを設定すれば良いだけです。

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class ScriptTest : MonoBehaviour
{
    void Start()
    {
        //これだとエラーが出ます。
        //GameObject Cube = (GameObject)Resources.Load("Cube");
        //Cube.transform.GetComponent<MeshRenderer>().material.color = Color.red;

        //これだとエラー出ません。
        GameObject Cube = Instantiate((GameObject)Resources.Load("Cube"));
        Cube.transform.GetComponent<MeshRenderer>().material.color = Color.red;
    }
}