Unity Test Frameworkでシーン上のオブジェクトを取得する方法
目次
1. はじめに
Unity Test Framework(UTF)では、Edit ModeテストとPlay Modeテストの両方でシーン内オブジェクトを取得・検証できます。
本資料では、それぞれの手順をコード例付きで解説します。
2. Edit Mode テスト
2.1 シーンの読み込み
using UnityEditor.SceneManagement;
using NUnit.Framework;
public class EditModeSceneTests
{
[SetUp]
public void Setup()
{
// テスト対象のシーンをEditor上で開く
EditorSceneManager.OpenScene("Assets/Scenes/MyScene.unity");
}
2.2 オブジェクトの検索と検証
[Test]
public void VerifyGameObjectExists()
{
// アクティブなGameObjectを名前で検索
var obj = GameObject.Find("MyGameObject");
Assert.That(obj, Is.Not.Null, "MyGameObject がシーン内に存在するはずです");
}
2.3 後始末(クリーンアップ)
[TearDown]
public void Teardown()
{
// テスト後はデフォルトシーンにリセット
EditorSceneManager.NewScene(
NewSceneSetup.DefaultGameObjects,
NewSceneMode.Single
);
}
}
3. Play Mode テスト
3.1 シーンのロード
using UnityEngine;
using UnityEngine.SceneManagement;
using UnityEngine.TestTools;
using NUnit.Framework;
using System.Collections;
public class PlayModeSceneTests
{
[UnityTest]
public IEnumerator LoadSceneAndFindObject()
{
// Build Settings に登録したシーンをロード
SceneManager.LoadScene("MyScene", LoadSceneMode.Single);
yield return null; // 1フレーム待機してロード完了を待つ
3.2 オブジェクトの検索と検証
var obj = GameObject.Find("MyGameObject");
Assert.IsNotNull(obj, "ロード後のシーンに MyGameObject が存在するはずです");
}
}
ポイント
- Play Mode テストではシーンをBuild Settingsに登録が必要
- フレームをまたぐ検証には [UnityTest] 属性を使用
4. Build Settings に登録せずにロードする方法
テスト専用シーンをBuild Settingsに追加したくない場合:
using UnityEditor.SceneManagement;
using UnityEngine.TestTools;
using NUnit.Framework;
using System.Collections;
public class EditorPlayModeTests
{
[UnityTest]
public IEnumerator LoadEditorSceneWithoutBuildSettings()
{
var path = "Assets/Scenes/MyScene.unity";
// Build Settings 依存せずにPlay Modeでシーンをロード
EditorSceneManager.LoadSceneInPlayMode(
path,
new LoadSceneParameters(LoadSceneMode.Single)
);
yield return null;
Assert.IsNotNull(GameObject.Find("MyGameObject"));
}
}
5. ポイントまとめ
- Edit Mode
- [SetUp]:EditorSceneManager.OpenScene でシーン読み込み
- [Test]:GameObject.Find でオブジェクト検証
- [TearDown]:EditorSceneManager.NewScene でクリーンアップ
- Play Mode
- [UnityTest]:SceneManager.LoadScene → yield return null → GameObject.Find
- Build Settings 非依存
- EditorSceneManager.LoadSceneInPlayMode を活用
これで、UTFを使ったシーン上オブジェクトの取得と検証が行えます。
ディスカッション
コメント一覧
まだ、コメントがありません