プログラミング逆引き辞典

~ 多言語対応のプログラミングレシピ ~

Unity3D オブジェクトをスクリプトで色変更(RGB)

■Unity3Dのオブジェクトをスクリプトで色変更する方法
 
①適当なオブジェクトを用意してスクリプトをアタッチ
今回はCubeオブジェクトにMyScript.csをアタッチ

 
②MyScript.csのに下記内容を記述


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

public class MyScript : MonoBehaviour
{
    // ゲームオブジェクト変数を宣言
    GameObject cube;
    // 色変数を宣言
    // 赤
    float r;
    // 緑
    float g;
    // 青
    float b;

    // Start is called before the first frame update
    void Start()
    {
        // スクリプトをアタッチしたCubeを設定
        cube = this.gameObject; 
        // 各色変数を初期化
        r = 0f;
        g = 0f;
        b = 0f;
        // Cubeの色を黒で初期化 ※RGB(0, 0, 0)
        cube.GetComponent().material.color = new Color(r, g, b);
    }

    // Update is called once per frame
    void Update()
    {
        // 特に意味はないが動いていたほうが見栄えがいいのでCubeを回転
        cube.GetComponent().Rotate(1,0,1);

        // 「スペース」押下時
        if (Input.GetKey(KeyCode.Space)) {
            // 押下毎にCubeを赤色に近づけていく ※r=255 => 赤色
            if (r <= 255) {
                r += 1;
            } else {
                // 赤色になったら初期の黒に戻す
                r = 0;
            }
            // Cubeの色を変更
            // new Color()でRGB指定 ※255で割ること 
            cube.GetComponent().material.color = new Color(r/255,g/255,b/255);
        }
    }
}

 
③Unityで再生して、スペースを押すごとに赤色に近づき、赤色になると初期の黒色に戻る