|
|
(同じ利用者による、間の7版が非表示) |
行1: |
行1: |
− | 公式のCubeBlend.shaderを使って行う
| + | [[Unity/Shader/skybox/徐々に変更/色]] |
| | | |
− | #Shaderのdirを作成して、新規でShaderを作り、"Skybox_CubeBlendShader"にファイル名を変更して、CubeBuild.Shaderを貼り付け。コード内のhiddenをskyboxに変更。
| + | [[Unity/Shader/skybox/徐々に変更/cubebox]] |
− | #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>
| + | |
− | | + | |
− | ==オブジェクトが表示されない問題==
| + | |
− | Shader内の、"ZTest Always"を消すとよい。
| + | |
2022年12月7日 (水) 13:55時点における最新版
Unity/Shader/skybox/徐々に変更/色
Unity/Shader/skybox/徐々に変更/cubebox