Beispiel #1
0
        public static List <Object> FindScenesWhichContainAsset(string file)
        {
            string assetPath = GetAssetPathFromFileNameAndExtension(file);
            Object cur       = AssetDatabase.LoadAssetAtPath(assetPath, typeof(Object));

            return(AllScenes.Where(a => ADependsOnB(a, cur)).ToList());
        }
Beispiel #2
0
        public void OnDestroy()
        {
            if (_dontInit)
            {
                return;
            }

            RunSystemForAllEntity <IExitGame>();

            foreach (var entity in _entities.Values.ToList())
            {
                entity?.Dispose();
            }

            //清理一下
            _entities.Clear();
            components.Clear();
            systemsOfTag.Clear();
            systemsOfComponent.Clear();
            _allSystem.Clear();

            //清除所有Scene
            AllScenes.Clear();
            Instance = null;
            //手动GC
            GC.Collect();
            "World Destroy".Log();
        }
        public void Update(GameTime gameTime)
        {
            if (ActiveScene.GetType().Name == "MenuScene")
            {
                MenuItemSprite s = ActiveScene.AllTheSpritesWithinTheScene.OfType <MenuItemSprite>().FirstOrDefault(x => x.Bounds.Contains(InputEngine.MousePosition) && InputEngine.IsMouseLeftClick());

                if (s != null)
                {
                    if (s.SpriteID == "MI1")
                    {
                        PreviousScene = ActiveScene;
                        ActiveScene   = AllScenes.Pop();
                        AllScenes.Push(PreviousScene);
                    }
                    else if (s.SpriteID == "MI2")
                    {
                        PreviousScene = ActiveScene;
                        ActiveScene   = CreateHighscoreScene();
                        AllScenes.Push(PreviousScene);
                    }
                    else if (s.SpriteID == "MI3")
                    {
                        Helper.CurrentGame.Exit();
                    }
                }
            }
            else if (InputEngine.IsKeyPressed(ChangeSceneKey))
            {
                if (ActiveScene.GetType().Name == "PlayScene")
                {
                    PreviousScene = ActiveScene;
                    ActiveScene   = AllScenes.Pop();
                    AllScenes.Push(PreviousScene);
                }
                else if (ActiveScene.GetType().Name == "HighscoreScene")
                {
                    ActiveScene = AllScenes.Pop();
                }
            }


            if (ActiveScene.GetType().Name == "PlayScene")
            {
                ActiveScene.Update(gameTime);
                PlayScene playScene = (PlayScene)ActiveScene;
                if (playScene.Gameover)
                {
                    ActiveScene = CreateHighscoreScene();
                }
            }
        }
Beispiel #4
0
        public void Awake()
        {
            _allSystem = new();
            if (Instance != null)
            {
                _dontInit = true;
                Destroy(gameObject);
                return;
            }

            _entities          = new();
            components         = new();
            systemsOfTag       = new();
            systemsOfComponent = new();

            Instance = this;

            DontDestroyOnLoad(gameObject);

            //系统初始化必须放在所有初始化之前
            Initialization();

            //基本核心组件挂载的实体
            Main = new YuoEntity(0);

            Main.EntityName = "核心组件";

            AddComponet(Main, IDGenerater.Instance);

            //添加一个场景实体
            var scene = new YuoEntity(IDGenerater.GetID(IDGenerater.IDType.Scene, 0));

            scene.EntityName = "默认场景";
            AllScenes.Add(scene);
            scene.AddComponent <SceneComponent>();
        }
Beispiel #5
0
 public MinigameInfo(Image image, Button button, AllScenes scene)
 {
     minigameImage  = image;
     minigameButton = button;
     sceneName      = scene;
 }
Beispiel #6
0
 /*public void StartMinigame()
  * {
  *  Core.ChangeScene.MainMenu.StartMinigame(current.currentMinigameID);
  * }*/
 public void StartMinigame(AllScenes scene)
 {
     LeanTween.pauseAll();
     Core.ChangeScene.MainMenu.LoadByName(scene.ToString());
 }
Beispiel #7
0
 public void ChangeScene(AllScenes scene)
 {
     Core.ChangeScene.MainMenu.LoadByName(scene.ToString());
 }