質問: UIを一定時間後に表示する方法を教えてください。 UIのゲームオブジェクト名はEndSceneで、中にパネルとボタンが3つ(クリックするとシーン移動するもの)存在しています。 最初を非表示にしておき、25秒後にEndSceneごと表示させ3つのボタンを選択できるようにしたいのですが、うまくいきません。 どのようにしたらよいかアドバイスお願いします。 現段階は下のようになっています。 このスクリプトをEndSceneにつけ、EndSceneコンポーネントのEndSceneプロパティにゲームオブジェクト上のEndSceneをドラッグ&ドロップで設定しています。 ``` using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; public class EndScene : MonoBehaviour { void Start() { //EndSceneを25秒後に呼び出す Invoke("Update", 25f); } public GameObject endScene; void Update() { endScene.SetActive(true); } } ```
回答: Update() はUnityの特殊な関数で毎フレーム自動的に呼ばれるため、このままではすぐに SetActive が呼ばれることになります。別の関数にしましょう。 あと、時間経過後表示するということなので、ゲームオブジェクトの初期状態は非アクティブ状態であるはずです。ですが、非アクティブ状態では Start() や Update() といったUnityの特殊な関数も呼ばれなくなってしまうので機能しません。 回避策として、このゲームオブジェクトの上位に表示管理用としてアクティブなEmptyゲームオブジェクトを作り、こちらにスクリプトを適用するといった方法があります。