public static void FindPath(int _starTileX, int _starTileY, int _endTileX, int _endTileY, CEPathFindBasic _findEngine, Action <CEPathFindResult> _finishCallback) { if (mInstance == null) { Debug.LogError("you should attack CEPathFind to an gameobject and call FindPath after it have been init"); } else { var agentProxy = new CEPathFindAgentProxy(); agentProxy.agent = new CEPathFindAgent(); agentProxy.agent.Reset(_findEngine, _starTileX, _starTileY, _endTileX, _endTileY); agentProxy.callback += _finishCallback; mInstance.AddAgentProxy(agentProxy); } }
/// <summary> /// 异步搜索,需要等待回调 /// </summary> public static void FindPathAsync(int _starTileX, int _starTileY, int _endTileX, int _endTileY, CEPathFindMapAgent _findEngine, Action <CEPathFindResult> _finishCallback) { if (mInstance == null) { mHoldGo = new GameObject("CEPathFind"); DontDestroyOnLoad(mHoldGo); mInstance = mHoldGo.AddComponent <CEPathFind>(); } var agentProxy = new CEPathFindAgentProxy { agent = new CEPathFindAgent() }; agentProxy.agent.Reset(_findEngine, _starTileX, _starTileY, _endTileX, _endTileY); agentProxy.callback = _finishCallback; mInstance.AddAgentProxy(agentProxy); }
private void AddAgentProxy(CEPathFindAgentProxy _proxy) { mAllAgentProxyList.Add(_proxy); }