[過去ログ] 【ゲームエンジン】Unity初心者質問スレBuild4 (1002レス)
上下前次1-新
抽出解除 必死チェッカー(本家) (べ) 自ID レス栞 あぼーん
このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
リロード規制です。10分ほどで解除するので、他のブラウザへ避難してください。
797(3): 787 2020/06/23(火)02:44 ID:+QcZMjB7(1/3) AAS
>>789
Destroy()で破壊する方法を使うことにしました。
Scene4 Scene5 Scene6 だけで音楽の付いたオブジェを鳴らしたいので
SceneManager.GetActiveScene().name でシーン名を取得して
------------------------------------------------------------------
using UnityEngine;
using UnityEngine.SceneManagement;
public class musicplayer : MonoBehaviour
{
private void Awake()
{
if (SceneManager.GetActiveScene().name != ("Scene4" || "Scene5 " || "Scene6"))
{
Destroy(gameObject);
}
else
{
DontDestroyOnLoad(gameObject);
}
}
}
----------------------------------------------------------
このようにコードを書いたら
//CS0019 演算子 '||' を 'string' と 'string' 型のオペランドに適用することはできません
というエラーが出たのですがこの場合どのように対処したらいいのでしょうか。
802(1): 797 2020/06/23(火)11:56 ID:+QcZMjB7(2/3) AAS
>>798の描き方と
>>799の正規表現の描き方、両方ともエラーが消えたのですが、
Scene4 から始まって Scene7 になってもBGMオブジェクトは消えませんでした。
private void Awake()
{
Debug.Log("Awake()関数が呼ばれた");//シーン遷移時にAwake()関数が呼ばれているか調べる
if (System.Text.RegularExpressions.Regex.IsMatch(SceneManager.GetActiveScene().name, @"Scene(4|5|6)"))
{
DontDestroyOnLoad(gameObject);//Scene4のBGMオブジェクトを次のシーンへ引き継ぐ
}
else
{
Destroy(gameObject);
}
}
Awake()関数は Scene4 で一回呼ばれただけで、Scene5 以降、シーンが変わっても呼ばれないことが分かりました。
なので Scene7 以降も BGMオブジェクトは消えなかったです。
教えていただいてコードの描き方は分かったのですが、この方法では無理だったみたいです。
また別の方法を考えないといけないのですが、いいアイデアはないでしょうか?
807: 797 2020/06/23(火)13:36 ID:+QcZMjB7(3/3) AAS
>>803
Scene7のスタート関数で削除する処理を試してみたら成功しました。有難うございます。
>>804
イベントハンドラという方法があったのですか。これなら削除したい場所のシーンの名前を複数設定できるし、
他のシーンに削除する処理を書かなくていいので良い事尽くめです。この方法で削除の処理をします。有難うございます。
>>805
DontDestroyOnLoadかシングルトンという方法を使うか迷ったのですが、今回はシングルトンを覚えなくても乗り切れそうです。
いつか覚えることになる宿題になると思います。有難うございます。
上下前次1-新書関写板覧索設栞歴
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ
ぬこの手 ぬこTOP 0.040s