FC2ブログ
11 «1.2.3.4.5.6.7.8.9.10.11.12.13.14.15.16.17.18.19.20.21.22.23.24.25.26.27.28.29.30.31.» 01

ハルシオンシステムの気ままBlog

株式会社ハルシオンシステムのメンバーが送る、UnityやらJavaやらの技術的話題から、自社開発のアプリの宣伝とかとかのブログです。ほんと気ままにいきたいと思います。更新日は毎週 月 木でっす!

 

【ハルシオンブログ】Unityでトランジションを導入してみた。というか、トランジションの事書いてるサイトがあったから使わせてもらいました! 

こんにちは!坂内っす。

Unityでシーン切り替え時等にトランジションを入れようと色々調べていたところ、いいサイトがあったので、使わせていただきました。

【Unityでトランジション演出を実装する】
https://cfm-art.sakura.ne.jp/sys/archives/963

ただ、こちらのサイトでは、暗転時用と明転時用のShaderとMaterialを用意しておりますが、暗転時用の物だけを用意し暗転・明転を表現してみました。

変わるところは、Shaderの_Alphaを触るコードのところだけです。
基本的なやり方は上記サイトをご参考あれ。

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

public class Transition : MonoBehaviour {

[SerializeField]
private Image imgTransition;
private Material _material;

void Awake() {
DontDestroyOnLoad(gameObject);
_material = imgTransition.GetComponent<Image>().material;
}

public void SetAlpha(float i) {
_material.SetFloat("_Alpha", i);
}

/// <summary>
/// time秒かけてトランジションを行う(暗転)
/// </summary>
/// <param name="time"></param>
/// <returns></returns>
public IEnumerator FadeOut(float time) {
float current = 0;
while(current < time) {
_material.SetFloat("_Alpha", current / time);
yield return new WaitForEndOfFrame();
current += Time.deltaTime;
}
_material.SetFloat("_Alpha", 1);
}

/// <summary>
/// time秒かけてトランジションを行う(明転)
/// </summary>
/// <param name="time"></param>
/// <returns></returns>
public IEnumerator FadeIn(float time) {
float current = 1;
while(current > 0) {
_material.SetFloat("_Alpha", current / time);
yield return new WaitForEndOfFrame();
current -= Time.deltaTime;
}
_material.SetFloat("_Alpha", 0);
}
}


これで、好きなタイミングでトランジションを行うことができるようになりました。

トランジションのオブジェクトをDontDestroyOnLoad(gameObject)してあげることで、どこのシーンからでも呼ぶことができます。

って感じの物を作ってみました。あでゅ~ノシ
スポンサーサイト

Category: 開発日記(Unity)

tb 0 : cm 0   

コメント

コメントの投稿

Secret

トラックバック

トラックバックURL
→http://halcyonsystemblog.blog.fc2.com/tb.php/480-21b8e8dd
この記事にトラックバックする(FC2ブログユーザー)