using System.Collections.Generic; using Game.Pathfinding; using JetBrains.Annotations; using UnityEngine; using System.Linq; namespace Game { [Procedure(ProcedureType.GameSceneLogicProcedure)] class GameSceneLogicProcedure : ProcedureBase { public override void OnEnter() { base.OnEnter(); // UniTask.Create(async () => // { // await ResourceManager.Instance.LoadSceneAsync(SceneType.Game.ToString()); // EventManager.Instance.FireNow(this,new LoadingGameSceneFinishEventArgs(true)); // }); var player = Game.playerManager.CreatePlayer("测试","player"); var gameGlobalConfig = GameObject.FindObjectOfType(); BFS bfs = new BFS(CreateGraph(gameGlobalConfig)); var beginNode = GetNode(bfs, new Vector2(-29f,-16.5f)); var endNode = GetNode(bfs, new Vector2(-15.8f,44.3f)); var findPath = bfs.FindPath(beginNode, endNode); var wayPoints = new List(); findPath.GetDatas(wayPoints); Debug.Log($"Indices:{string.Join(',',findPath.GetNodes().Select(x=> x.index))}"); Debug.Log($"Positions:{string.Join(',',findPath.GetNodes().Select(x=> x.data.position))}"); // player.MoveAsync() } [CanBeNull] private static Node GetNode(BFS bfs, Vector2 position) { float distance = float.MaxValue; Node targetStartNode=null; bfs.GetNode(node => { var magnitude = ((Vector2)node.data.position - position).magnitude; if (magnitude < distance) { distance = magnitude; targetStartNode = node; } return false; }); return targetStartNode; } private Graph CreateGraph(GameGlobalConfig gameGlobalConfig) { var graph = new WayPointGraph(); graph.Initialize(gameGlobalConfig.nodeMaps); return graph; } public override void OnLeave() { base.OnLeave(); // UIManager.Instance.ShowUI(UIType.GameSceneMainUI); // ProcedureManager.Instance.ChangeProcedure(ProcedureType.GameSceneLogicProcedure); } } }