Unityでゲームオブジェクトの見た目を変更したい場合、マテリアルを操作する必要があります。 スクリプトからマテリアルを変更することで、ゲーム中にオブジェクトの色を変えたり、ダメージを受けた時に見た目を変化させたり、プレイヤーの選択に応じて見た目をカスタマイズしたりといった、動的な表現が可能になります。
すでに作ってあるマテリアルをスクリプトからオブジェクトにアタッチするには、Rendererコンポーネントを取得する必要があります。
using UnityEngine;
public class Sample : MonoBehaviour
{
public Material newMaterial;
private Renderer objectRenderer;
void Start()
{
// Rendererコンポーネントを取得
objectRenderer = GetComponent();
// オブジェクトのマテリアルをnewMaterialに変更
objectRenderer.material = newMaterial;
}
}
上記のコードをマテリアルを変更したいオブジェクトにアタッチし、インスペクターで「New Material」の欄に、 変更したいマテリアルをドラッグ&ドロップした状態で、エディターを再生すると、オブジェクトのマテリアルが変更されます。
スクリプトから新しいマテリアルを生成して、それをオブジェクトにアタッチするには、new Material(Shader.Find("Universal Render Pipeline/Lit"))を使います。
using UnityEngine;
public class Sample : MonoBehaviour
{
private Renderer objectRenderer;
void Start()
{
// Rendererコンポーネントを取得
objectRenderer = GetComponent();
// 新しいマテリアルをシェーダーを指定して作成
Material newMaterial = new Material(Shader.Find("Universal Render Pipeline/Lit"));
// マテリアルの色を赤色に設定
newMaterial.color = Color.red;
// 新しいマテリアルをオブジェクトにアタッチ
objectRenderer.material = newMaterial;
}
}
上記のコードをマテリアルを変更したいオブジェクトにアタッチし、 エディターを再生するとそのオブジェクトに赤色のマテリアルがアタッチされます。