private async Task RenameGameProfileAsync() { var name = _navigationService.ShowRenameProfileDialog(Target.EntryPoint, _package.GameProfile.Name); if (name.IsNullOrEmpty()) { return; } using (await _queue.GetBlockingScope()) using (new ProcessingScope(_processable)) { var gameProfileId = _package.GameProfile.Id; var gameProfile = _package.GameProfile.Clone(); gameProfile.Name = name; await _actionBuilder.Dispatch(new UpdateGameProfileCommand(gameProfile)) .CompleteFor <ActionSucceededNotification>(async(context, @event) => await PublishUpdateStatusEventAsync(StatusType.Ok, "GameProfileRenamed")) .CompleteFor <ErrorOccuredNotification>(async(context, @event) => await PublishUnknownErrorEventAsync()) .OnTimeout(async() => await PublishTimeoutEventAsync()) .Execute(); _package = await _findGamePackageByIdQuery.FindByGameProfileIdAsync(gameProfileId); RebindGameProfiles(); OnPropertyChanged(() => GameProfileId); OnPropertyChanged(() => GameProfileName); } }
private async Task AddGameProfileAsync() { var gameId = _package.Game.Id; var addedProfile = _navigationService.ShowAddProfileDialog(Target.EntryPoint, _gameProfiles); if (addedProfile == null) { return; } using (new ProcessingScope(_processable)) { var id = Guid.Empty; await _actionBuilder.Dispatch(new AddGameProfileCommand(addedProfile.ProfileName, gameId, addedProfile.BasedOnGameProfileId)) .CompleteFor <GameProfileAddedNotification>((context, @event) => id = @event.Id) .CompleteFor <ErrorOccuredNotification>(async(context, @event) => await PublishUnknownErrorEventAsync()) .OnTimeout(async() => await PublishTimeoutEventAsync()) .Execute(); if (id != Guid.Empty) { _package = await _findGamePackageByIdQuery.FindByGameIdAsync(gameId); RebindGameProfiles(); Rebind(); } } }
private async Task RemoveGameProfileAsync() { var id = _package.GameProfile.Id; if (!_navigationService.ShowConfirmationDialog( Target.EntryPoint, Localization.Localization.Current.Get("RemoveGameProfileDialogTitle"), Localization.Localization.Current.Get("RemoveGameProfileQuestion"))) { return; } using (await _queue.GetBlockingScope()) using (new ProcessingScope(_processable)) { await _actionBuilder.Dispatch(new RemoveGameProfileCommand(id)) .CompleteFor <ActionSucceededNotification>(async(context, @event) => await PublishUpdateStatusEventAsync(StatusType.Ok, "ProfileRemoved")) .CompleteFor <ErrorOccuredNotification>(async(context, @event) => await PublishUnknownErrorEventAsync()) .OnTimeout(async() => await PublishTimeoutEventAsync()) .Execute(); _package = await _findLastEditedGamePackageQuery.FindAsync(); RebindGameProfiles(); Rebind(); } }
private async Task InitializeInjectorModeAsync() { _mode = ModeType.Injector; _scheduler?.Dispose(); if (_package == null) { _package = await _findLastEditedGamePackageQuery.FindAsync(); _gamePackages = await _findGamesQuery.FindAllAsync(); } _injectionViewModel = new InjectionViewModel(this, _package); _scheduler = new BlockingScheduler(() => _runner.Run(async() => await EstimateInjectorStateAsync(true)), TaskInterval); PluginViewModel = new PluginViewModel( _pluginFactory.Create(_package), _publisher, _navigationService, _componentViewModelFactory); await EstimateInjectorStateAsync(); Validate(); EditPluginMainSettings(); StartScheduler(); }
/// <summary> /// Обработчик главной страницы /// </summary> public async Task <IActionResult> Index() { var model = new HomeIndexModel() { AvailableGames = GamePackage.ListAvailable() .Select(pkg => GameInfo.FromGamePackage(pkg)) .ToList(), ActiveSessions = sessionsManager.GetSessions() .Select(s => SessionInfo.FromGameSession(s)) .OrderBy(si => si.StartedAt) .ToList() }; if (model.IsSigned) { try { var playerSession = userCtx.GetGameSession(); model.PlayerSession = SessionInfo.FromGameSession(playerSession); model.IsSigned = true; } catch (NullReferenceException) { await userCtx.PerformLogout(); } } return(View(model)); }
/// <summary> /// 数据保存 /// </summary> protected void btnSave_Click(object sender, EventArgs e) { GamePackage config = new GamePackage(); if (IntParam > 0) { if (!AuthUserOperationPermission(Permission.Edit)) { return; } config = FacadeManage.aidePlatformFacade.GetGamePackage(IntParam); } config.Name = CtrlHelper.GetText(txtName); config.TypeID = Convert.ToByte(ddlTypeID.SelectedValue); config.SortID = CtrlHelper.GetInt(txtSortID, 0); config.Describe = CtrlHelper.GetText(txtDescribe); config.Nullity = Convert.ToByte(rblNullity.SelectedValue); config.PlatformKind = Convert.ToInt32(Dropplatform.SelectedValue); int result = IntParam > 0 ? FacadeManage.aidePlatformFacade.UpdateGamePackage(config) : FacadeManage.aidePlatformFacade.InsertGamePackage(config); if (result > 0) { ShowInfo("操作成功", "GamePackageConfigList.aspx", 1200); } else { ShowError("操作失败"); } }
public async Task <FileResult> GetAsset(string name) { const string DefaultMime = "application/octet-stream"; var ext2MimeMap = new Dictionary <string, string> { [".json"] = "text/json", [".png"] = "image/png", [".jpg"] = "image/jpeg" }; var pkg = new GamePackage(GameName); using (var file = pkg.OpenAssetFile(name)) { var contents = new byte[file.Length]; await file.ReadAsync(contents, 0, contents.Length); // Определить тип содержимого string ext = Path.GetExtension(name); if (!ext2MimeMap.TryGetValue(ext, out string contentType)) { contentType = DefaultMime; } return(File(contents, contentType)); } }
public IPluginDataAccessLayer Create(GamePackage package) { if (!_gameProfileFactory.ContainsKey(package.GameProfile.PluginType)) { throw new ArgumentException($@"plugin component policy for {package.GameProfile.PluginType} could not be resolved", nameof(package)); } return(_gameProfileFactory[package.GameProfile.PluginType](package)); }
/// <summary> /// Создать из информации о пакете игры /// </summary> /// <param name="pkg">Пакет данных игры</param> /// <returns>Информация об игре</returns> public static GameInfo FromGamePackage(GamePackage pkg) { return(new GameInfo() { Name = pkg.Name, Path = pkg.DirectoryPath, IsValid = pkg.Validate() }); }
public async Task TestObjectsLoading() { var pkg = new GamePackage(GamePackageName); var objManager = new ObjectsManager(pkg); await objManager.LoadDefinitions(); var fieldObject = objManager.CreateObject("field"); Assert.IsTrue(fieldObject.Type == ObjectType.Static); }
public string GetPackageName(int PackageID) { string PackageName = ""; GamePackage info = FacadeManage.aidePlatformFacade.GetGamePackage(PackageID); if (info != null) { PackageName = info.Name; } return(PackageName); }
public async Task TestSceneLoading() { var pkg = new GamePackage(GamePackageName); var objManager = new ObjectsManager(pkg); await objManager.LoadDefinitions(); var roomLoader = new GameRoomLoader(pkg); var room = await roomLoader.Load(objManager); Assert.AreNotEqual(0, room.Interior.Count); Assert.AreNotEqual(0, room.PresentationMetadata.PointsOfView.Count); }
public void RenewWindowPackage(GamePackage package) { _cardUIList = ConvertPackageToUI(package); if (_cardSpriteList.Count == 0) { return; } _cardSpriteList.ForEach((sprite) => sprite.OnClick -= CardClickHandler); for (var i = 0; i < _cardSpriteList.Count; i++) { for (var j = 0; j < _cardUIList.Count; j++) { if (_cardSpriteList[i].Card.CardSuit == _cardUIList[j].CardSuit && _cardSpriteList[i].Card.CardType == _cardUIList[j].CardType) { Vector2 position; Texture2D texture; float rotation; float zIndex; // Renew sprite state CalculateNewSpriteState(_cardUIList[j], out position, out texture, out rotation, out zIndex); var texturePosition = (texture == _backSprite) ? Point.Zero : new Point((int)_cardUIList[j].CardSuit, (int)_cardUIList[j].CardType); _cardSpriteList[i].Reset(texture, texturePosition, rotation, zIndex, CardResizeIndex); if (position != _cardSpriteList[i].Position) { _cardSpriteList[i].Animate(position, AnimationTime); } // Set event handlers if (_cardUIList[j].CardPosition == CardPosition.Player) { _cardSpriteList[i].OnClick += CardClickHandler; } } } } // Renew button state if (package.WhoseParty == PlayerType.Enemy) { ResetButtons(ButtonType.GetAll); } if (package.WhoseParty == PlayerType.Player) { ResetButtons(ButtonType.Pass); } ShowCards = true; }
/// <summary> /// 数据绑定 /// </summary> private void BindData() { if (IntParam > 0) { GamePackage config = FacadeManage.aidePlatformFacade.GetGamePackage(IntParam); if (config != null) { CtrlHelper.SetText(txtName, config.Name.ToString()); CtrlHelper.SetText(txtSortID, config.SortID.ToString()); CtrlHelper.SetText(txtDescribe, config.Describe.ToString()); ddlTypeID.SelectedValue = config.TypeID.ToString(); rblNullity.SelectedValue = config.Nullity.ToString(); Dropplatform.SelectedValue = config.PlatformKind.ToString(); } } }
// Start is called before the first frame update void Start() { app.SetActive(false); //button.onClick.AddListener(() => AppIn(button.gameObject)); for (int i = 0; i < gamePackageSet.games.Length; i++) { GamePackage g = gamePackageSet.games[i]; GameObject obj = Instantiate(appButton, canvas.transform); Button b = obj.GetComponent <Button>(); Image im = obj.transform.GetChild(0).GetComponent <Image>();//プレハブの構造が変わると危険! obj.transform.localPosition = upperRightPos + new Vector3(width * (i % widthCount), -height * (i / widthCount)); b.onClick.AddListener(() => AppIn(obj.transform.position, g)); im.sprite = g.iconImage; } app.transform.SetAsLastSibling(); }
public void ReceiveMessage(DataPackage pack) { if (pack.requestType == RequestType.game) { string stream = System.Text.Encoding.UTF8.GetString(pack.data); Debug.Log("在线好友:" + stream); GamePackage package = LitJson.JsonMapper.ToObject <GamePackage>(stream); // 用Loom的方法在Unity主线程中调用 Loom.QueueOnMainThread((param) => { Loom.ins.Alert(this.transform, "好友在线列表"); }, null); } }
public void SetGameData(GamePackage gamePackage) { if (Trump != gamePackage.Trump || PlayerCards != gamePackage.PlayerCards) { if (OnGameError != null) { OnGameError(GameError.Error, "Trump suit and player's card list do not match"); } return; } Deck = gamePackage.Deck; EnemyCards = gamePackage.EnemyCards; DescPairs = gamePackage.DescPairs; WhoseParty = gamePackage.WhoseParty; }
private static void LoadSetting() { // 設定を保存(読み込み)するパス ScriptableObjectは.assetを付けないと正しく読んでくれません var path = "Assets/Main/Games/TestPlayPackage.asset"; setting = AssetDatabase.LoadAssetAtPath <GamePackage>(path); if (setting == null) { // ロードしてnullだったら存在しないので生成 setting = ScriptableObject.CreateInstance <GamePackage>(); // ScriptableObjectはnewではなくCreateInstanceを使います AssetDatabase.CreateAsset(setting, path); } string[] strs = EditorSceneManager.GetActiveScene().path.Split('/'); setting.sceneName = strs[strs.Length - 1].Replace(".unity", string.Empty); }
private async Task ChangeGameProfileAsync(AggregateId gameProfileId) { using (new ProcessingScope(_processable)) { _package = await _findGamePackageByIdQuery.FindByGameProfileIdAsync(gameProfileId); await InitializeInjectorModeAsync(); Rebind(); await _actionBuilder.Dispatch(new UpdateLastEditedGameProfileCommand(_package.GameProfile.Id)) .CompleteFor <ActionSucceededNotification>(async(context, @event) => await PublishUpdateStatusEventAsync(StatusType.Ok, "GameProfileChanged", GameName, GameProfileName)) .CompleteFor <ErrorOccuredNotification>(async(context, @event) => await PublishUnknownErrorEventAsync()) .OnTimeout(async() => await PublishTimeoutEventAsync()) .Execute(); } }
public void AppIn(Vector3 pos, GamePackage gamePackage) { app.transform.position = pos; backPos = pos; selectedGame = gamePackage; titleText.text = gamePackage.titleName; explanationText.text = gamePackage.explanation; authorText.text = "つくったひと : " + gamePackage.authorName; screenshotIm.sprite = gamePackage.screenshotImage; highScoreText.text = "ハイスコア:" + System.String.Format("{0, 3}", ScoreManager.Instance.GetScoreData(gamePackage.sceneName).Scores[0].ToString()); app.SetActive(true); app.transform.localScale = Vector3.zero; app.transform.DOScale(1, 0.25f).SetEase(Ease.OutCubic); app.transform.DOLocalMove(Vector3.zero, 0.25f).SetEase(Ease.OutCubic); }
public async Task <IActionResult> UserGameDetails(Token tokenVar) { var decodeToken = new JwtSecurityTokenHandler().ReadJwtToken(tokenVar.token); //var identity = HttpContext.User.Identity as ClaimsIdentity; IList <Claim> claim = decodeToken.Claims.ToList(); var userName = claim[0].Value; UserAccount userAccount = await _context.UserAccounts.Where <UserAccount>(UserAccount => UserAccount.UserName == userName).FirstOrDefaultAsync <UserAccount>(); Game[] games = await _context.Games.Where(e => e.OwnerId == userAccount.Id).ToArrayAsync(); //player to game is just the list of player ID's, use that to get the user-datas, then put that list of userdatas into the game array GamePackage[] gamePackageList = new GamePackage[games.Length]; for (int i = 0; i < games.Length; i++) { List <UserData> userDataList = new List <UserData>(); gamePackageList[i] = new GamePackage(games[i], userDataList); //Get the player Id's PlayerToGame[] playerIds = await _context.PlayerToGames.Where <PlayerToGame>(PlayerToGame => PlayerToGame.GameId == games[i].GameId).ToArrayAsync <PlayerToGame>(); for (int j = 0; j < playerIds.Length; j++) { //Get the userDatas from those ID's UserData userData = await _context.UserDatas.Where <UserData>(UserData => UserData.UserId == playerIds[j].UserId).FirstOrDefaultAsync <UserData>(); gamePackageList[i].playerList.Add(userData); } } var jsonGameList = JsonConvert.SerializeObject(gamePackageList); IActionResult response = Ok(new { gameList = jsonGameList }); return(response); //use the username to get the id //use the id to get list of game id's //use the list of game id's to return a json list of the game details //Send back and de-serialize //Make a looping list of things in front-end. }
private void RecvThread() { try { while (true) { if (client == null || !client.Connected) { break; } client.Receive(recvBuf, 4, SocketFlags.None); recvReader.BaseStream.Seek(0, SeekOrigin.Begin); var pkgLen = recvReader.ReadInt32(); int recvLen = 0; while (recvLen < pkgLen) { recvLen += client.Receive(recvBuf, recvLen, pkgLen - recvLen, SocketFlags.None); } recvReader.BaseStream.Seek(0, SeekOrigin.Begin); var pkg = new GamePackage { MainCmd = recvReader.ReadByte(), ParaCmd = recvReader.ReadByte(), DataLen = recvReader.ReadInt16() }; pkg.Data = recvReader.ReadBytes(pkg.DataLen); recvQueue.Enqueue(pkg); } } catch (ThreadAbortException) { } }
public void TestGameListing() { var availableGames = GamePackage.ListAvailable(); Assert.AreNotEqual(0, availableGames.Count); }
/// <summary> /// 新增签到礼包配置 /// </summary> /// <param name="config"></param> /// <returns></returns> public int InsertGamePackage(GamePackage config) { return(_aidePlatformData.InsertGamePackage(config)); }
/// <summary> /// 修改签到礼包配置 /// </summary> /// <param name="config"></param> /// <returns></returns> public int UpdateGamePackage(GamePackage config) { return(_aidePlatformData.UpdateGamePackage(config)); }
public InjectionViewModel(InjectionConfigurationViewModel injectionConfigurationViewModel, GamePackage package) { _injectionConfigurationViewModel = injectionConfigurationViewModel; _package = package; _tokenReplacer = new TokenReplacer(new ApplicationFilePathTokenReplacingPolicy(() => _package.Game?.FilePath ?? string.Empty)); }
public List <CardUI> ConvertPackageToUI(GamePackage package) { _countPlayerCards = package.PlayerCards.Count; _countEnemyCards = package.EnemyCards.Count; List <CardUI> cardUIList = new List <CardUI> { }; int index = 0; package.Deck.ForEach((card) => { cardUIList.Add(new CardUI { CardPosition = CardPosition.Deck, CardSuit = card.CardSuit, CardType = card.CardType, Index = index++ }); }); index = 0; package.DescPairs.ForEach((pair) => { cardUIList.Add(new CardUI { CardPosition = CardPosition.Desc, CardSuit = pair.LowerCard.CardSuit, CardType = pair.LowerCard.CardType, Index = index++ }); if (pair.UpperCard != null) { cardUIList.Add(new CardUI { CardPosition = CardPosition.Desc, CardSuit = pair.UpperCard.Value.CardSuit, CardType = pair.UpperCard.Value.CardType, Index = index++ }); } }); index = 0; package.PlayerCards.ForEach((card) => { cardUIList.Add(new CardUI { CardPosition = CardPosition.Player, CardSuit = card.CardSuit, CardType = card.CardType, Index = index++ }); }); index = 0; package.EnemyCards.ForEach((card) => { cardUIList.Add(new CardUI { CardPosition = CardPosition.Enemy, CardSuit = card.CardSuit, CardType = card.CardType, Index = index++ }); }); // Get list of cards out of desc foreach (var sprite in _cardSpriteList) { var contains = false; foreach (var fui in cardUIList) { if (fui.CardType == sprite.Card.CardType && fui.CardSuit == sprite.Card.CardSuit) { contains = true; break; } } if (!contains) { cardUIList.Add(new CardUI { CardPosition = CardPosition.OutOfDesc, CardSuit = sprite.Card.CardSuit, CardType = sprite.Card.CardType, Index = 0 }); } } return(cardUIList); }
// Start is called before the first frame update void Start() { Time.timeScale = 1; #if UNITY_EDITOR DebugNotificationGenerator.Notify("Qキーでデバッグ表示ON/OFF"); #else DebugNotificationGenerator.Notify("4本マルチタッチでデバッグ表示ON/OFF"); #endif #if UNITY_EDITOR isTestPlay = EditorPrefs.GetBool("testPlayFlag", false); if (isTestPlay) { Debug.Log("これはテストプレイです😀"); EditorPrefs.SetBool("testPlayFlag", false); mode = PlayMode.Debug; var path = "Assets/Main/Games/TestPlayPackage.asset"; singleGame = AssetDatabase.LoadAssetAtPath <GamePackage>(path); Time.timeScale = EditorPrefs.GetFloat("timeScale", 1); //Initialization(); } #endif //Debug.Log(SceneManager.GetActiveScene().buildIndex); /* * if (mode != PlayMode.None) * { * Initialization(); * } */ //やばい実装、後で直す if (SceneManager.GetActiveScene().buildIndex == 1) { mode = PlayMode.Normal; } else { //IsGamePlaying = true; //mode = PlayMode.None; } if (mode != PlayMode.None) { Initialization(); } statementMesh.gameObject.SetActive(false); //デバッグ用 //EndGame(); DebugTextManager.Display(() => "TimeScale:" + Time.timeScale + "\n"); //DebugTextManager.Display(() => "progress:" + async.progress + "\n"); //DebugTextManager.Display(() => "IsGamePlaying:" + IsGamePlaying.ToString() + "\n"); DebugTextManager.Display(() => "mode:" + mode.ToString() + "\n"); //DebugTextManager.Display(() => "gameType:" + currentGameType.ToString() + "\n"); //DebugTextManager.Display(() => "Loading:" + (async.progress * 100).ToString("D3") + "%\n"); //DebugTextManager.Display(() => "Aspect:" + managerCamera.aspect + "\n"); //DebugTextManager.Display(() => "AdsIsReady:" + Advertisement.IsReady() + "\n"); //managerCammera.DOAspect(1, 5); //managerCammera.aspect = 16f / 9f; //カメラをアス比に合わせる設定 //managerCamera.orthographicSize *= 16f / 9f / managerCamera.aspect; }
private void EndGame() { Sequence seq = DOTween.Sequence() .OnStart(() => { ClearActionQueue.Clear(); CameraZoomOut(); IsGamePlaying = false; MusicManager.audioSource.volume = 1f; if (ClearFlag) { MusicManager.Play(BgmCode.Success); backgrondAnim.Play("Clear"); for (int i = 0; i < restNum; i++) { coinAnims[i].Play("CoinClear"); } } else { MusicManager.Play(BgmCode.Failure); backgrondAnim.Play("Failure"); /* * for (int i = 0; i < restNum; i++) * { * coinAnims[i].Play("CoinClear"); * } * foreach (Animator anim in coinAnims) * { * if (anim.gameObject.activeSelf) * { * anim.Play("CoinFailure"); * } * } */ coinAnims[restNum - 1].Play("CoinFailure"); } }) .AppendInterval(0.5f) .AppendCallback(() => { SceneManager.UnloadSceneAsync(Instance.sceneName); //シーン削除 Scene scene = SceneManager.GetSceneByName("ManagerScene"); // 取得したシーンのルートにあるオブジェクトを取得 GameObject[] rootObjects = scene.GetRootGameObjects(); foreach (GameObject obj in rootObjects) { //Debug.Log(obj.name); //レイヤーがManagerSceneでないオブジェクトを削除 if (obj.layer != 8) { Destroy(obj); } } gameScene = SceneManager.GetSceneByName(sceneName); //EffectManager.StopEffect(); currentGame = LoadGamePackage(); isCanPause = true; //Debug.Log(currentGame.name); }) .AppendInterval(1.5f) .AppendCallback(() => { //失敗処理 if (!ClearFlag) { coinAnims[restNum - 1].gameObject.SetActive(false); restNum--; if (restNum == 0) { FinishFlag = true; } } ClearFlag = false; foreach (Animator anim in coinAnims) { if (anim.gameObject.activeSelf) { anim.Play("CoinReady"); } } if (FinishFlag) { Finish(); } else { backgrondAnim.Play("Ready"); number++; numberMesh.text = number.ToString(); Time.timeScale += 0.1f; MusicManager.audioSource.volume = 1f; MusicManager.Play(BgmCode.Ready); StartGame(); //SpeedUp(); } }); }
public void Initialization() { if (!isTestPlay) { Time.timeScale = 1; } number = 1; restNum = 4; numberMesh.text = number.ToString(); numberMesh.gameObject.SetActive(false); gameQueue.Clear(); gameList.Clear(); ClearFlag = false; numberMesh.transform.localScale = Vector3.one; if (isTestPlay) { currentGame = LoadGamePackage(); SceneManager.SetActiveScene(SceneManager.GetSceneByName("ManagerScene")); SceneManager.UnloadSceneAsync(currentGame.sceneName); } //gameListを初期化 InitializeGamePackage(); currentGame = LoadGamePackage(); if (mode == PlayMode.Normal) { highScoreMesh.text = "ハイスコア:" + System.String.Format("{0, 3}", ScoreManager.Instance.GetScoreData().Scores[0].ToString()); } else if (mode == PlayMode.Single) { highScoreMesh.text = "ハイスコア:" + System.String.Format("{0, 3}", ScoreManager.Instance.GetScoreData(currentGame.sceneName).Scores[0].ToString()); } Sequence seq = DOTween.Sequence() .OnStart(() => { FinishFlag = false; MusicManager.Play(BgmCode.Start); backgrondAnim.Play("Start", 0, 0); for (int i = 0; i < restNum; i++) { coinAnims[i].gameObject.SetActive(true); coinAnims[i].Play("CoinStart", 0, 0); coinAnims[i].speed = 0; } }) .AppendInterval(1f) .AppendCallback(() => { for (int i = 0; i < restNum; i++) { coinAnims[i].speed = 1; } }) .AppendInterval(1f) .AppendCallback(() => { MusicManager.Play(BgmCode.Ready); backgrondAnim.Play("Ready"); foreach (Animator anim in coinAnims) { anim.Play("CoinReady"); } numberMesh.gameObject.SetActive(true); /* * //次のシーン読み込み * currentGame = LoadGamePackage(); * gameScene = SceneManager.GetSceneByName(sceneName); * if (!gameScene.IsValid()) * { * async = SceneManager.LoadSceneAsync(sceneName, LoadSceneMode.Additive); * async.allowSceneActivation = false; * } */ ClearActionQueue.Clear(); isCanPause = true; }) .AppendCallback(() => StartGame()); }