前提・実現したいこと
■開発環境
Unity 2017.2.0f3
OS Windows10 Home(64bit)
Unityを使いノベルゲームを作成中です。
シーン切り替え前にフェードアウト機能を使いたいのですが上手くいきません。
発生している問題・エラーメッセージ
下記コードの太字部分(FadeScript.cs 関数Fadeout())の動作が確認できません。
問題点について教示頂けないでしょうか。
(組み込みソフトウェア開発経験はあるのですが、Unityは触り始めて1週間程です…)
■求めている動作
①タイトル画面のオブジェクト"Button"を押下し、[NewStartDirector.cs]が作動
※UnityのGUI "Button"を使用。
②[NewStartDirector.cs]にて[FadeScript.cs]を埋め込んだ、オブジェクト"Image"の情報を取得
※UnityのGUI "Image"を使用。ゲーム画面全体に表示
③[FadeScript.cs]の内部関数<Fadeout()>にて、"Image"のRBGを操作することで、画面全体をフェードアウトする
④フェードアウト完了後、[NewStartDirector.cs]にて別シーン「NewStartScene」へ切り替え
■コード
<NewStartDirector.cs>
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using UnityEngine.SceneManagement;
public class NewStartDirector : MonoBehaviour {
void Start(){ } void Update(){ } public void NewStart(){ GameObject obj = GameObject.Find ("Image") as GameObject;
print ("a\n"); //動作確認用出力1
FadeScript fadeout = obj.GetComponent<FadeScript>();
print ("b\n"); //動作確認用出力2
fadeout.Fadeout ();
print ("d\n"); //動作確認用出力4
SceneManager.LoadScene ("NewStartScene"); }
}
<FadeScript.cs>
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class FadeScript : MonoBehaviour {
public float speed = 0.01f; //透明化の速さ public float alfa = 0f0; //A値を操作するための変数 public float red; //RGBを操作するための変数 public float green; public float blue; void Start () { //Panelの色を取得 red = GetComponent<Image>().color.r; green = GetComponent<Image>().color.g; blue = GetComponent<Image>().color.b; } void Update(){ } **public void Fadeout() {** **GetComponent<Image> ().color = new Color (red, green, blue, alfa);** **alfa += speed;**
print ("c\n"); //動作確認用出力3
}
}
エラーメッセージなし
試したこと
各所にprint処理を埋め込んだのですが、件のFadeout()の出力 C も得られました。
関数そのものは動いているようなのですが、オブジェクト Imageのフェードアウトが行われません。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/03/10 16:58 編集
退会済みユーザー
2019/03/13 07:06
2019/03/14 14:24
退会済みユーザー
2019/03/14 14:27
2019/03/14 14:32
退会済みユーザー
2019/03/14 22:35