3

私はエンジン Unity でゲームに取り組んでおり、時刻に基づいてスカイボックスの色を変更しようとしていますが、それを機能させる方法を見つけることができないようです..私がやりたいこと、私はレンダリング設定でスカイボックスに使用するマテリアルの色を変更し、赤、緑、青にそれぞれ 1 つの変数を使用して設定できるようにすることです。

私はC#を使用しています。

すべての回答を事前にありがとう:)

4

4 に答える 4

8

コメントに表示したコードから:

RenderSettings.skybox.SetColor("_Tint", 0, 0, 青)

私はあなたが意味すると思います

RenderSettings.skybox.SetColor("_Tint", Color.blue)

余分なゼロは必要ありません。色「」はColor クラスのメンバー変数であることを覚えておいてください。

次に、時間システムを開発し、スカイボックス レンダラーを制御するスクリプトに渡す時間変数に基づいて、Lerp 関数を使用して、ある色から次の色にスムーズに移行する必要があります...このように

using UnityEngine;
using System.Collections;

public class example : MonoBehaviour {
    public Color colorStart = Color.blue;
    public Color colorEnd = Color.green;
    public float duration = 1.0F;
    void Update() {
        float lerp = Mathf.PingPong(Time.time, duration) / duration;
        RenderSettings.skybox.SetColor("_Tint", Color.Lerp(colorStart, colorEnd, lerp));
    }
}

次に、colorStart と colorEnd を変更する関数を作成できます...

お役に立てれば...

于 2012-09-24T17:30:46.613 に答える