実現したいこと
コルーチンを利用して、下記のソースコードにあるGameObjectを表示した後は、2秒間処理を待機させたいです。
前提
2秒待機するという目的を実現するため、WaitForSecondsを入れてみました。
しかし、それでもGameObjectは表示されるタイミングが変わりません。
コルーチンの実装がまだ慣れていないため、間違えている部分が多数あると思われますが、ご容赦ください。
該当のソースコード
public IEnumerator checkAngle() { this.acceleration = Input.acceleration; this.compass = Input.compass; this.gyro = Input.gyro.attitude; gyroX = compass.trueHeading; // ジャイロセンサの値を取得し、Unity内のカメラと同期 this.transform.localRotation = Quaternion.Euler(90, 0, 0) * (new Quaternion(-gyro.x, -gyro.y, gyro.z, gyro.w)); setAngleRange(gyroX); if (DirectionsManager.instance.startFlag) { // 角度を取得し、向いている方向により処理を分岐 switch (checkAngleX(gyroX)) { // 北方向を向いた処理 case directions.North: // 全4方位のボタンをとりあえず削除 fourDirectionsButtonNonActive(); // 北のブースボタンを表示 DirectionsManager.instance.NorthButton.SetActive(true); // 表示されたボタンがチカチカされないよう、2秒待機 yield return new WaitForSeconds(2.0f); Debug.Log("待機終了"); yield break; // 西方向を向いた処理 case directions.West: // 全4方位のボタンをとりあえず削除 fourDirectionsButtonNonActive(); // 西のブースボタンを表示 DirectionsManager.instance.WestButton.SetActive(true); // 表示されたボタンがチカチカされないよう、2秒待機 yield return new WaitForSeconds(2.0f); Debug.Log("西の待機終了"); yield break; // 南方向を向いた処理 case directions.South: // 全4方位のボタンをとりあえず削除 fourDirectionsButtonNonActive(); // 南のブースボタンを表示 DirectionsManager.instance.SouthButton.SetActive(true); // 表示されたボタンがチカチカされないよう、2秒待機 yield return new WaitForSeconds(2.0f); Debug.Log("南の待機終了"); yield break; // 東方向を向いた処理 case directions.East: // 全4方位のボタンをとりあえず削除 fourDirectionsButtonNonActive(); // 表示されたボタンがチカチカされないよう、2秒待機 yield return new WaitForSeconds(2.0f); // 東のブースボタンを表示 DirectionsManager.instance.EastButton.SetActive(true); Debug.Log("待機終了"); yield break; // 上記4つ以外の方向を向いた処理 default: // 表示されたボタンがチカチカされないよう、2秒待機 yield return new WaitForSeconds(2.0f); fourDirectionsButtonNonActive(); yield break; } } }
試したこと
Debug.Logを2秒待機後に書き、出現タイミングを計ってみました。そこでは、GameObject表示後の2秒後にDebug.Logが表示されました。ここまでは分かるのですが、Denug.Log表示タイミングとは関係なしにGameObjectが2秒待機されないのが分かりませんでした。
補足情報(FW/ツールのバージョンなど)
Unity.Ver : 2022.02.13f1
visualstudio 2019
0 コメント