facebook twitter hatena line email

「Unity/Shader/skybox/徐々に変更」の版間の差分

提供: 初心者エンジニアの簡易メモ
移動: 案内検索
 
(同じ利用者による、間の14版が非表示)
行1: 行1:
公式のCubeBlend.shaderを使って行う
+
[[Unity/Shader/skybox/徐々に変更/色]]
  
#Shaderのdirを作成して、新規でShaderを作り、"Skybox_CubeBlendShader"にファイル名を変更して、こちらをコピー
+
[[Unity/Shader/skybox/徐々に変更/cubebox]]
https://github.com/TwoTailsGames/Unity-Built-in-Shaders/blob/master/DefaultResourcesExtra/Cubemaps/CubeBlend.shader
+
#Materialを新規作成して、InspectorのShaderを、Skybox/CubeBlendに変更する。
+
#2箇所のskyboxにcubemapをドラッグして設定。
+
 
+
 
+
<pre>
+
using System.Collections;
+
using UnityEngine;
+
 
+
public class SkyboxCubeBlend : MonoBehaviour
+
{
+
    [SerializeField] Material _skyMat = default;
+
    [SerializeField, Range(0f, 1f)] float _rate = 0.05f;
+
    Coroutine _coroutine = default;
+
    Material _runtimeMaterial = default;
+
 
+
    public void Start()
+
    {
+
        FadeSkybox();
+
    }
+
    public void FadeSkybox()
+
    {
+
        if (_coroutine == null)
+
        {
+
            _runtimeMaterial = Instantiate(_skyMat);
+
            RenderSettings.skybox = _runtimeMaterial;
+
            _coroutine = StartCoroutine(FadeSkyboxRoutine(_rate));
+
        }
+
    }
+
 
+
    IEnumerator FadeSkyboxRoutine(float rate)
+
    {
+
        float blend = 0f;
+
        while (blend < 1)
+
        {
+
            _runtimeMaterial.SetFloat("_value", blend);
+
            blend += rate;
+
            Debug.Log("_value=" + blend);
+
            yield return null;
+
        }
+
        _runtimeMaterial.SetFloat("_value", 1);
+
        _coroutine = null;
+
    }
+
}
+
</pre>
+

2022年12月7日 (水) 13:55時点における最新版

Unity/Shader/skybox/徐々に変更/色

Unity/Shader/skybox/徐々に変更/cubebox