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

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

新規登録して質問してみよう
ただいま回答率
85.46%
C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

iOS

iOSとは、Apple製のスマートフォンであるiPhoneやタブレット端末のiPadに搭載しているオペレーションシステム(OS)です。その他にもiPod touch・Apple TVにも搭載されています。

Unity3D

Unity3Dは、ゲームや対話式の3Dアプリケーション、トレーニングシュミレーション、そして医学的・建築学的な技術を可視化する、商業用の開発プラットフォームです。

Unity

Unityは、Unity Technologiesが開発・販売している、IDEを内蔵するゲームエンジンです。主にC#を用いたプログラミングでコンテンツの開発が可能です。

Q&A

解決済

1回答

3359閲覧

Unityで特定のシーンの場合に処理を実行したい。

awwawa

総合スコア0

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

iOS

iOSとは、Apple製のスマートフォンであるiPhoneやタブレット端末のiPadに搭載しているオペレーションシステム(OS)です。その他にもiPod touch・Apple TVにも搭載されています。

Unity3D

Unity3Dは、ゲームや対話式の3Dアプリケーション、トレーニングシュミレーション、そして医学的・建築学的な技術を可視化する、商業用の開発プラットフォームです。

Unity

Unityは、Unity Technologiesが開発・販売している、IDEを内蔵するゲームエンジンです。主にC#を用いたプログラミングでコンテンツの開発が可能です。

1グッド

0クリップ

投稿2021/08/07 01:31

編集2021/08/07 01:38

前提・実現したいこと

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

babu4971👍を押しています

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

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

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

自己解決

該当のソースコードの前に別のシーンでの処理が書かれていたので反映されなかったようです。
そのため、そこも 
if (SceneManager.GetActiveScene().name == "シーン名"){処理内容}
のように書くことで問題が解決しました。

投稿2021/08/07 02:09

awwawa

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.46%

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

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

質問する

関連した質問