前提・実現したいこと
Unityで特定のシーンの場合に処理を実行したい。(iosのARアプリ開発をしています)
発生している問題・エラーメッセージ
エラーは出ないのですが、実際にビルドしてみると処理が実行されません。
(シーンの名前がFirstSceneの場合に{}内の処理を実行したい)
### 該当のソースコード if (SceneManager.GetActiveScene().name == "FirstScene") { if (updated.trackingState == TrackingState.Tracking) { allObjects[updated.referenceImage.name].SetActive(true); } else { allObjects[updated.referenceImage.name].SetActive(false); } } ```C# ### 試したこと FirstSceneを別のシーン名に変えたところ、そのシーンでは処理が実行されました。 なぜかFirstSceneの時だけ処理が実行されません。 ##スクリプト全文 ```ここに言語を入力 using System.Collections.Generic; using UnityEngine; using UnityEngine.SceneManagement; using UnityEngine.XR.ARFoundation; using UnityEngine.XR.ARSubsystems; [RequireComponent(typeof(ARTrackedImageManager))] public class TrackMultiple : MonoBehaviour { [Header("登録したいオブジェクトを追加します。オブジェクトの追加順と画像の登録順で紐付けします。")] //マーカーに認識させたいオブジェクトをインスペクターで登録します。a public List<GameObject> ObjectsToPlace; private int refImageCount; private Dictionary<string, GameObject> allObjects; private ARTrackedImageManager arTrackedImageManager; private IReferenceImageLibrary refLibrary; void Awake() { //ARTrackedImageManagerを取得します arTrackedImageManager = GetComponent<ARTrackedImageManager>(); } private void OnEnable() { arTrackedImageManager.trackedImagesChanged += OnImageChanged; } private void OnDisable() { arTrackedImageManager.trackedImagesChanged -= OnImageChanged; } private void Start() { refLibrary = arTrackedImageManager.referenceLibrary; refImageCount = refLibrary.count; LoadObjectDictionary(); } void LoadObjectDictionary() { //ARTrackedImageManagerに登録されている画像情報と表示させたいオブジェクトを関連付けします allObjects = new Dictionary<string, GameObject>(); for (int i = 0; i < refImageCount; i++) { allObjects.Add(refLibrary[i].name, ObjectsToPlace[i]); //最後にオブジェクトを非表示します。 ObjectsToPlace[i].SetActive(false); } } void ActivateTrackedObject(string _imageName) { allObjects[_imageName].SetActive(true); } public void OnImageChanged(ARTrackedImagesChangedEventArgs _args) { foreach (var addedImage in _args.added) { //初検知したらオブジェクト表示をONにします。 ActivateTrackedObject(addedImage.referenceImage.name); } foreach (var updated in _args.updated) { allObjects[updated.referenceImage.name].transform.position = updated.transform.position; allObjects[updated.referenceImage.name].transform.rotation = updated.transform.rotation; var child2 = transform.Find("StartButton/Button/Text Countdown").gameObject; if (SceneManager.GetActiveScene().name == "FirstScene") { if (updated.trackingState == TrackingState.Tracking) { allObjects[updated.referenceImage.name].SetActive(true); } else { allObjects[updated.referenceImage.name].SetActive(false); } } transform.Find("Canvas").gameObject.SetActive(false); transform.Find("StartButton").gameObject.SetActive(true); if (updated.trackingState == TrackingState.Tracking) { allObjects[updated.referenceImage.name].SetActive(true); } } } }
###補足情報
Unityバージョン 2020.3.4f1
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。