public void SceneTest() { IGame game = new GameBuilder().Build(); Scene sce = new Scene(); int count = 0; game.SceneEvents.UnloadSceneEvent += (sender, args) => { if (args.UnloadScene.GetHashCode() == sce.GetHashCode()) { count++; } }; // ロードに成功 Assert.True(game.LoadScene(sce).IsSuccess); // ロードに成功しているので取得に成功 Assert.True(game.GetScene(sce.InstanceGuid).IsSuccess); Scene scene = new Scene(); Scene scene2 = new Scene(); Assert.True(game.LoadScene(scene).IsSuccess); // 既に追加されているので失敗 Assert.False(game.LoadScene(scene).IsSuccess); // ロードに成功しているので取得に成功 Assert.True(game.GetScene(scene.InstanceGuid).IsSuccess); Assert.True(game.UnloadScene(scene).IsSuccess); // 既にアンロードされているので失敗 Assert.False(game.UnloadScene(scene).IsSuccess); // アンロードされているので取得に失敗 Assert.False(game.GetScene(scene.InstanceGuid).IsSuccess); Assert.True(game.LoadScene(scene).IsSuccess); Assert.True(game.GetScene(scene.InstanceGuid).IsSuccess); Assert.True(game.LoadScene(scene2).IsSuccess); Assert.True(game.GetScene(scene2.InstanceGuid).IsSuccess); Assert.True(game.UnloadScenes()); // 全てアンロードしたので失敗 Assert.False(game.GetScene(scene.InstanceGuid).IsSuccess); Assert.False(game.GetScene(scene2.InstanceGuid).IsSuccess); game.LoadScene(scene); game.LoadNextScene(scene2); // 前にロードしたシーンの取得に失敗 Assert.False(game.GetScene(scene.InstanceGuid).IsSuccess); // 新しくロードしたシーンの取得に成功 Assert.True(game.GetScene(scene2.InstanceGuid).IsSuccess); // イベントの呼び出しチェック Assert.True(count == 1); }