3Dモデルと2DスプライトとUIのフェード処理

フェード処理は見た感じを柔らかくするが好きで
アプリを作るときはついつい多用してしまいます。

オブジェクトによって、微妙に処理が違うので
それぞれのプログラムを記述します。


※注意点
※3DモデルのフェードはiTweenのFadeTo()を使用しています。透過できるシェーダを設定してください(transparentなど)
※UIのフェードはCanvasGroupコンポーネントを使用しています。事前にアタッチしてください

public class FadeScript : MonoBehaviour {

public GameObject cube;
public GameObject sprite;
public GameObject ui;

void Start () {
StartCoroutine(FadeCubeProc());
StartCoroutine(FadeSpriteProc());
StartCoroutine(FadeUIProc());
}

IEnumerator FadeCubeProc() {
// フェードアウト
iTween.FadeTo(cube, iTween.Hash("alpha", 0, "time", 2));
yield return new WaitForSeconds(2);
// フェードイン
iTween.FadeTo(cube, iTween.Hash("alpha", 1, "time", 2));

}

IEnumerator FadeSpriteProc() {
Color spriteColor = sprite.GetComponent<SpriteRenderer>().color;
// フェードアウト
while(spriteColor.a > 0) {
spriteColor.a -= Time.deltaTime;
sprite.GetComponent<SpriteRenderer>().color =
new Color(spriteColor.r, spriteColor.g, spriteColor.b, spriteColor.a);
yield return null;
}
// フェードイン
while(spriteColor.a < 1) {
spriteColor.a += Time.deltaTime;
sprite.GetComponent<SpriteRenderer>().color =
new Color(spriteColor.r, spriteColor.g, spriteColor.b, spriteColor.a);
yield return null;
}
}

IEnumerator FadeUIProc() {
// フェードアウト
while(ui.GetComponent<CanvasGroup>().alpha > 0) {
ui.GetComponent<CanvasGroup>().alpha -= Time.deltaTime;
yield return null;
}
// フェードイン
while(ui.GetComponent<CanvasGroup>().alpha < 1) {
ui.GetComponent<CanvasGroup>().alpha += Time.deltaTime;
yield return null;
}
}
}

(実行例) 左から3Dモデル、2Dスプライト、UI
いろいろフェード

関連記事
[タグ] 小技

コメント

非公開コメント

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。