質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
86.12%
canvas

HTML5の<canvas>要素用のタグです。CanvasはHTML5から導入された、二次元の図形描写が可能な要素です。

button

HTMLで用いる<button>タグです。

Unity

Unityは、ユニティテクノロジーが開発したゲームエンジンです。 主にモバイルやブラウザ向けのゲーム製作に利用されていましたが、3Dの重力付きゲームが簡単に作成できることから需要が増え、現在はマルチプラットフォームに対応しています。 言語はC言語/C++で書かれていますが、C#、JavaScript、Booで書かれたコードにも対応しています。

解決済

【Unity】Canvas内のボタンを押下後にシーン遷移が行われるようにスクリプトを修正したい

PotePui
rara

総合スコア68

canvas

HTML5の<canvas>要素用のタグです。CanvasはHTML5から導入された、二次元の図形描写が可能な要素です。

button

HTMLで用いる<button>タグです。

Unity

Unityは、ユニティテクノロジーが開発したゲームエンジンです。 主にモバイルやブラウザ向けのゲーム製作に利用されていましたが、3Dの重力付きゲームが簡単に作成できることから需要が増え、現在はマルチプラットフォームに対応しています。 言語はC言語/C++で書かれていますが、C#、JavaScript、Booで書かれたコードにも対応しています。

1回答

1リアクション

0クリップ

287閲覧

投稿2022/07/13 17:46

実現したいこと

UnityのCanvas内にあるボタンを押下すると、1.1秒後にフェードイン・アウトのAnimationがシーン遷移に併せて、実行されるスクリプトです。

やりたいことは、そのボタンを押下するとがシーン遷移が始まる。という内容にしたいです。

発生している問題・エラーメッセージ

現状:実行すると、開始と同時にシーン遷移が開始されます・・・

このスクリプトをコピペしてもフェードイン・アウトのアニメーションがないため分かりずらいですが、
自分でも分かっていますが、Start関数内にOnClick.AddListenerを記述しているため、
もちろん、ボタンを押すどころか、Editorを実行した瞬間にフェードイン・アウトと共にシーン遷移が始まります。。。

分かってはいると記載しましたが、AddListenerの使い方がよく分かっていないせいだと思います。
publicメソッドを使用したくないので、スクリプトからボタンを押したらシーン遷移が開始されるように、
スクリプトをどう変更すればよいのでしょうか。
ググって色々調べましたが、結局分からずじまいになってしまってます💦
すみません、簡単なことだと思いますが少しUnityから離れてて、また再開しています。

C#

using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.SceneManagement; using UnityEngine.UI; /// <summary> /// Canvas GroupのAlpha値の変化により、指定時間後にAnimationでImageを /// ゆっくりフェードイン・アウトを行い、シーン遷移を行うスクリプト /// </summary> public sealed class LevelLoader : MonoBehaviour { [SerializeField, Tooltip("Scene遷移を行うボタン")] private Button _button; [SerializeField, Tooltip("Scene遷移するまでの時間(秒)")] private float _transitionTime = 1.1f; [SerializeField, Tooltip("Scene遷移時のフェードインアウト\nAnimatorComponentがAttachされているObjectを指定")] private Animator _transition; void Start() { _button.onClick.AddListener(() => LoadNextLevel()); } private void LoadNextLevel() { StartCoroutine(LoadLevel(SceneManager.GetActiveScene().buildIndex + 1)); } private IEnumerator LoadLevel(int levelIndex) { _transition.SetTrigger("Start"); // Play Animation yield return new WaitForSeconds(_transitionTime); // Wait SceneManager.LoadSceneAsync(levelIndex); // Load Scene } }

補足情報(FW/ツールのバージョンなど)

Unity ver2021.3.01f

q22r5695👍を押しています

以下のような質問にはリアクションをつけましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

リアクションが多い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

気になる質問をクリップする

クリップした質問は、後からいつでもマイページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

下記のような質問は推奨されていません。

  • 間違っている
  • 質問になっていない投稿
  • スパムや攻撃的な表現を用いた投稿

適切な質問に修正を依頼しましょう。

PotePui

2022/07/23 16:41

お返事遅れてすみません💦 アニメーションイベントもいいですね! ただ、最終的なデバイスはVRになるので、アニメーションは出来る限り使わないようにしたいです。 今回は上記の理由でアニメーションイベントは使わないですが、教えていただきありがとうございます。

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
86.12%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問

同じタグがついた質問を見る

canvas

HTML5の<canvas>要素用のタグです。CanvasはHTML5から導入された、二次元の図形描写が可能な要素です。

button

HTMLで用いる<button>タグです。

Unity

Unityは、ユニティテクノロジーが開発したゲームエンジンです。 主にモバイルやブラウザ向けのゲーム製作に利用されていましたが、3Dの重力付きゲームが簡単に作成できることから需要が増え、現在はマルチプラットフォームに対応しています。 言語はC言語/C++で書かれていますが、C#、JavaScript、Booで書かれたコードにも対応しています。