using UnityEngine; using System.Collections; using System.IO; using FairyGUI; using MiniJSON; using UnityEngine.Networking; using taurus.unity; using System.Text; using System; public class VerCheck : MonoBehaviour { GComponent _version_view; public static VerCheck Instance { get; private set; } public securityConnection conn; public bool isGFF = false; public bool isDXYGFF = true; public bool isXqd = false; void Awake() { Instance = this; } // Use this for initialization void Start() { GameApplication.Instance.isAndroid64bit = IsAndroid64bit(); CreateVersionView(); StartCoroutine(CheckNet()); } internal void ResetGame() { CreateVersionView(); StartCoroutine(__WaitReset()); } IEnumerator __WaitReset() { var _luaClient = GameApplication.Instance.GetComponent(); UnityEngine.Object.Destroy(_luaClient); System.GC.Collect(); FontManager.Clear(); UIPackage.RemoveAllPackages(); ResourcesManager.DestroyAll(); CreateVersionView(); yield return null; StartCoroutine(CheckNet()); } void CreateVersionView() { ResourcesManager.ReadAssetConfig("base/embed"); UIPackage.AddPackage("base/embed/ui/Hotupdate"); if (_version_view != null) _version_view.Dispose(); _version_view = null; _version_view = UIPackage.CreateObjectFromURL("ui://Hotupdate/Version").asCom; GRoot.inst.AddChildAt(_version_view,0); _version_view.x = (GRoot.inst.width - _version_view.width) / 2; Debug.LogError(Application.persistentDataPath); } public bool IsAndroid64bit() { #if UNITY_ANDROID && !UNITY_EDITOR if (IntPtr.Size == 8) { return true; } return false; #else return false; #endif } IEnumerator CheckNet() { string json_data = string.Empty; isDXYGFF= false; isGFF = false; isXqd = false; string init_url = ""; init_url = "http://8.138.242.190:29898/NewFK/config/init2_1.json"; if (isGFF==false&&isDXYGFF==false&& isXqd==false) { } else { if (isGFF) { int rc = AppVest.init("8ef91e7e799b5851a8ce810aae0c697c", "U5ayF4voVvRh1ElqBIVUCR9dSFskPGvCkfreFxdxzi39hoU0faqZWjFzC90Cta50egaQatCbPxm6XTlvi2+o++PrSozoZ+HUUY0y8tBloMWaOYQX59SAhjA/DyIDHJgGbE1I"); if (rc != 0) { // Debug.LogError("init failed"); ShowTip("GF init failed!", () => { StartCoroutine(CheckNet()); }); } // Debug.LogError("init successful"); conn.ip = ""; conn.port = 0; int rc1 = AppVest.getServerIPAndPort(ref conn, "", 5021); if (rc1 != 0) { ShowTip("getServerIPAndPort failed!", () => { StartCoroutine(CheckNet()); }); yield break; } } else if(isXqd) { long ret = XqdSDKManager.StartSDK(); Debug.Log($"Xqd init code is {ret}"); if (ret != 0) { Debug.LogError("wwwwwwwwwwwwwwwwwwwwwww init failed"); ShowTip($"Xqd init failed!code is {ret}", () => { StartCoroutine(CheckNet()); }); } // Debug.LogError("init successful"); conn.ip = "127.0.0.1"; conn.port = 29898; } else { string key = "QfTrC5MvugYiqxEAAI/1TJ3CCYOr3lLWcQCEvsSBHmy7aRv4MtHbXJM7SjewSLtXZURVV2ci8Xt6COqTqvpAoGuTpX90/BrK5qzvcJMaJShDLVmAK8UFmXaffinmR7CX+qnLHKI84WgqiW+6MYHmX+HBT32hvnSkjgsI1H7v4576WHXpTgiFB0rvVqFVSmf0tx5GJPYz9Ds1J42WMw3oOaXPvtgL+xHYPEgysGjSTkSjEhxfqb6nxmI6tCZ67dM9Bxz6hYqN6boNbeeuAEPRYtdJ8iDviY/lKPd20EfpXk109KlM1si5FShhUTvW+MYeaFJNMfqyTHyMFVyRFxlzIw6ZOQqZhYoPj9z2jTdTDi8xV2fzmeIBAeFiawndXlvXzKpZcXU0B6eDNnfpfmEc6k+B7IdWyY2VMD0V1g7lichqzZGCTbf180/4KFnDTK6asUnVJh3NlRmdt/IZ0G9KliUy2rCoGWsL9fedsNFQ2/s4tExcKKDdhm6Wp8VuMmyVHEYXutTpmePAYEHuL5+Ng4Piod3ICsZBN7/Bmdlg4mvFHaRGrT+lQJZVlSd6j/clruRmB+SmWDIw7+asf/BUpj2BE/1YQ88ruLumWeJIf/mGk9Qwp8VpfwxkJVSz+KZSjSv1tBXzXodKwkdIrPtXDSRaZP/RPzbcD50yY4+76UwKSyMHv5G687zW1hNiqq4oQURqJXrEtxrQQhkPrCi0RNcGLAhBlZo1B+Ip+4USsxOBppJrnB5ndE8TaAoY/Anu99Iz8r3B/VM2WGbGfdhcygAz9U+4/gEw/QrJGeiucvRUKdM4Sxh+9+S5V5Rs4ckWRu8qA2yuDR90XAwG6JjgqMVGo/kyFrMOx06fAff+Vt76nuIAByvDpupXsefHPDmv4mJ2zvZlZpNOPwAC0biQiQ1KShbVHMJyyBunJbfJx5F8PGJpHf2aXa4XsvjaIILQLIg57CsT9LRUdbLOcYO/K3YXRk3OBugDvANCfNF00xSlM+dEJVVjoM8tWpcgBmlWcU3T6976IMCVoY0OTsX8+iIsxSkJCo63AF200/CNzUG9wLGkTXVGYGvH0l9N1Y1NNfmYlGRtYaeieOrSoGyAA/gNs1/272J21JOSk/w29Zy2kUvFabRCUw2YGCP/mtRnTw3IKubZOWAbpZ5eX6L3R8IiybrWy4LSMRhVYhtWNtxxkxE77Ti2mDkGI4tiFKODpS+qsOnF6F1Anpz+Q0CMootG0KRj8/gdZNATJEMJscaAk8Vj7rJgldoZTo6WqaKTsZRUnpPTYjGjkpj8eyVjjiZGQNWSlBx6bemEJE6tEctPtDajL/cFJtV6cGPrh3H20OaKI47BMb/eKeVfNTtmTUkuVjhRdIlLu+wC9tZQ6KDHRe1+0EbD+YaghZp3gfsSed8Batt6G123PJAhPXWBHmbERS9lYQRt+4tv5NpK+6TqHFexQT74SnuoCfrFqB13Vhdifsii+nUrI577RXiu5mhAU0bBnK3EOISoxzdSi0oTTe63RJmxQs3daDJt9/t/9Ejz8Gw4c4lnDbzFVnB3ZLXLU1T24h5wx3kHrAhqWPjlmBgQqg1mQon9gYcWxRCVLac6M9fApwrf4oEk3nbqmeMFPpavaVDD7bW22BjFHk8k0CDZ5YQMbMnltlxdRm9su8Zio4VEaWoVKSTsGCujh8WCq5teGbTRa1CebE19RWeGIjALqiy4NBAo+/z+aaReH9jsG9LTOh3gNZiqFpOI5Aqut/NVSLRaqKHPxhi/eYzWMVp6hfQKGClR6QhDSa9TPXoAo4AWmNZ1uBX0yiQplppOZtlYP1WvGmIy0Z/OWRdpzIFVTdeN09yXP5QgiAMJ5EgW53tLOVfakiO/80K+w89yfu5Prop5g2P8w+SMJx96RGLzU8TRZlMpHWml9ONu/RYi3LN+ApZWlMbhtORm1GleoVLN5E8BwlROAU1Lyx/bhfe8clHy8j/o/MlYuWKiM5VXJSSDBNGpkWGeIMQmqk6LN5Qr0TYAXl01u/CT/VlpkS/xHCEAZDPYv0c+efpk3IB/jQsfxVQTotN6DNYQDMUIOUEdKZUR6nQLI5XHqCZrCw6z4+rIptqHd7cHJ2+3F4nH9Fkqrcrzqe9KGzdsez3qvSqFBFb8+FORJ74wi8pxYSLFEEdvUGm/5GXWtowul3ouWI++U2i7m3aKLebaSSb2NlQojmTmm2xhxL5g+fVD4aMzhbTcbTO+133/gL35/kEDAywtUX8zvWd7W6ruvuBR+QFLzZMyrHuw0EzkzFkNlKYXjq8Bwq20bGwYxn9fgbNBFoQ9K/fiYkhN3hdbUBAKheDTs9JfFVkMacj2GIDrxZelaRdgsUAgwM1f5KChd0pJIrkEtjr6sIPlLm6VK0ckzhRZcAXbIKy604l3Vk8i70Ps2630k1HquwzZSykj23+QGQkPcope//+h9jKYrStbS7BHiE+SHPSIAuzNlB2c4o+JxNwojg364G5VNVmmhzxkJ3P6ePIWurmoNcoS4AanEunfysJySRyeZjEURGR7EK4P8DmFW+11VGFReU2WNg5povdbnQtmY67JUtzDU6SU8X308wWx1FDeeZEPJJhxIgkJr10vqFDepFf4QZYE3Oig2FDkNlRBfT5P794CgcgQidQath/oUC5ombzhTQ6SKmPQUnxdGi/+upP+zQUjTz4CsOTnqwEckX5I9J/RJndDCZFWIxMO4gy5Kz2WsTtWbvutt66ctvj5IuQxx3GzPfiRZ1bgaDFEIKEsPC1CxuIT4iSGxofih3i4SiH/5Bd0dWKQTHkOAxDQClRZO22RZLX8lWHqbCCJTHtXr43XyZQo6k2yv0TPobKeK/XPS7oc0VdX6DxFKwpqm7Pyj9OSn0FLMWrPU8m5mKpR6JzEODCcMyZ5VvnJFJl0mCyXodSA4hwvuWwC9gZ9i2QAcyRAcZCKPbGPILCLio7/r16C2U6tIitrZON3oMnS9RK1suajmNKfQMoqteLndMhyJDh4paPPfUCIDIPykZyJ5FnNweITZFQveOVKSiV6HjTaYMm19BhqMFjXWLDJi0Qz53UfHlx1kJn3+glKk2lYxcVnoy/nqWkJUPZ7WEVw5XcMJIShv9MFgro3FT+tnoTkqevtKrDNcJcJawS9YGlX6swJeiD7SuBdtolY82bSK/OGZ3H6ZGV7sKr/67GhaEPVQSTTNyiAdqepf91O0HT5gaA72pBkivqYA8ACF2e7gkTstBHb4Qu9qclxWaHc6LQ/iYvYXG4MJh39Ju8SreTm2GUK8dE6b8497cPtd//xx4YgAquKWHL3BL6elPL0Ar4gF/21bocbN9Pn1TUXqcCyqWNb7oGnLSYhXHNX4GifvLTHX/37l67aDFeoDSXJcfIECJt6pZz7eLQH2o0Kttf+tyctvGlUF5Bl1WpOuZyK4qSpNhAXOizp28rTYOitbTyTlEGdGbYaExXtfz80p83lX/lrvRjaRT+iK9AN6oW5MJrVW1VEZHLQvWh+9ZwVKzk+nDt1q/zE/hEeRv894W7f5bX4MGPyBEivvWRyttrV2ywlhNfjP3WEc7VrDBAvN2KLrmoF1a/+zVKJTwIpP0ih3zHV6o6siMirKz5f2cFZgW7C7W0s+Px2Y6mW9sGn5qHeElR9ZYycEFkPyNirD3boKAN8iR7LMfCmRMZAeJx51p2g9pX/bAHhjbZszyyvaaEVQ4oeCTIRnASucfxvj37OxJcjp5Glc/uHZrQtI44aVZ8KiEu2N779MDnD/K/qib9oBrLu2uAWM189bfDZnSxc8W0mwwBUp8r8fzX0h7gSh5IK/C/acRiVEciEwt8UZeGa4gSx5ORrx9QC5zAOgSer2Nw3bJseq0WmMsM0A7okPB8piUbSusQo3dPsTS7L4JNk8qeKEUt2UJPPsY2KB2if8G7Qh2z3c76W5MyQvOZKn/nI0MaKELnDaBy+r0E1riwW0QfkfqQSP97Tc63l2TOraRg+1Jv6sWGdw1S8mgI5IiDDFr5BHXTQKgjYTTbM/ZvzcMrQazrqfOeHSKkY+2r8YAOaGj8juU1l0piIwZ2m+MfsU0nTd26UmNbbV2ENBYUO2dOV+0Gsx5ki3Qpk5H2kfWZJre5iDkbIkAC4HyKJaXYNOF7bY4hT0z72ld+iXJIndA1lNDD2yVzXggKsOboRjL0ZWgP1kJAkpoLaKLSBLlE/u52rYJ9qPunRS9ujhafPQc7rGK9c43gJR4wOZEnLKJHlBcF2d6O65b/CXrD5HL4l2ValOzb6GAO3Bm+w5yJx92LQlNk5kNhptdtcW0902tcoYFEkOpr1NYm4BFHztnCwYtYfI8N6LJ5cMMMv2tHxJzYXhURPC4ITqkHDF7dSIGAFkBsc/OCv2QAoLgqIA5ivzchXSGAlPEWFeFVpUpMJkyooOHTBYVLHLb8MmeHJGaeZ9IitBxLTSyGecWrf9RRIRjPFrOCeRr0/49zYGCxQcJiVuDxMGQG2hOJWHw4zt/f+l8jnxQ3fQ8fdHA4VNRbRZCjNb5joa10YhEze3/IcptYGNAbhQGj1kal8/erkvConkJcWuxPs1sSwURH9B4rtKvI41HvWjyPey2vQSzRy45CxkZjul/UjLEJjo3wPPr+CPBDJekGQu1ZJrkRWjA1BekfmKIDeBZsd4UZLub0Mnm+rjtevJ3o5g84q38pdXH4U0V9zQRMbvnSIJCU7Q3COM2BBXGvB9hdl/x4RDBDp0dRRVg+rHCf0eYMAvQEiJhqGuCZvW5qPBEtTZlMSP+Uu9uutfBl47zi/tdS6N8bs0+cWdmd5esOzfC6oftbLyzK6s8op/HVBhgjSxHSb3QduFZFwyGHBrttU0ukmCSHifYab9VYcqBk/97C251MT0mneix60YqZd/LlJuCdVF8ZYzmQfJhqw5Sp39l+03njpyt77FGxXOBu7n0bWOdaSUqotmPRKSXt/quUEcFE4R0GsjnDUxKkbYASrDw4kALrqDZkU4/yl/fKdE/gGejLwOPppmE2pBbUQ2SrG/kTe6kbmVJxzf91gW56W2NzJNnTUnzNMMGYO81ioPrhnYlmH2eb3ZNmO8NVkh/mbelARz/devMMtlTygHkf8V5qrOXreLY9Q7RAiNxRa3eyW9F+09QDsFtgX26yso9qaHaV3e1MoDBji+mypHxOmd2Eif8XV9WTkEfGzvVbelSX2OVmP0znoXi+Obvo0tkV0F8SFhyRexRJ+He/oTXV1XHAv6g9Lqo3wimfYxbxR3c/qtb0wW232BVEc4EyjSiFOcDwy3d83gcW4/yig83HuvCdrdJcI8Us7bUc6q/I+HsBq4loOiHVjPyTPi36x8+nXtiIhmAX6kVjvn8W/Vlr2F4In/e9qj0XPfuub5cUsKGBwk5B/LPye229SPJrAEi2OwApfs1b57oPdKKmLmy1SwKcsvsBsJ/wP7S4tPb67hOHGPqAdu75FOQYsYL+wfobgRnhibMXIomjf558IJs9wddKFLV2LNAXo5oW5P8U9Xm+mS/VGWBcc/Js4PdIePBM2u+rsK1EpVBJyeIVADmOhoYgwYdnZKRy6aC/BUvYxyqlxg4LZUDMeffXj09+R2u03lppK7No4W5HOMcEhZwIaQK3azYrfxlFVEuLi9FU8KYxAibtb5tzNOSjvCx5w+xXzyJIxtQ1jV85J9Nr2VGU8kgg04N1FvVnQDZRh77sy4xbN7ivCCnN/2zLsEvEB1uPBs3gWPBo3rgs5YKh4AmYTFhDEKWU5eIeTtAWrWKpnzjWvnztCG6b6lkAgianJB9nK2PrgPKx9hzrwgYcVi1Vf0JByx2Erz/ppyJIlGe7cyKwr4H6uhZGHMhcBUZgf5AvpwLcZVz93nwkAd3IaWG5LE7fZ6anWr0v96ZVKKX1hSeKHO1g3w3Fts0F0rQ4fbdmotD7fRfpgEhBsGm2pLHWKni2OkhwVFE9GazZoYQE83ny7oHM/gATnJyhHyagEw4bL6A/fj9m8kqDumdjE9q8OLzvv7IsBSx4ppmvyzEmlQqeunHgUAQAA0A4AAJkKAAAAUAAAAFAAAABQAAD5FAAAZGYwYjY1MTc1OWQzNDNjZTcyYzkzNmE1N2NkMzQxZjU4N2Y1NGJjODcxNjEzMjJhfQoAAOYGAABiAAAAogMAAMkGAADjCQAAPgUAADgEAABfBwAAGAkAAOkFAABTAAAA8AUAAG4DAAAqAQAAaAEAAPIFAABkCgAArwAAACQGAADdCAAAyQkAADILAACTBQAAAwUAAEINAADTDAAAUA0AAEwMAADABwAAPw4AAAkFAABUAgAAygEAAH4HAADoBQAAZwgAAN8DAADDCQAANQkAAEMAAABGCQAAvggAAOMDAAA2DgAAIwsAAHcLAABwCwAAtA0AAKQHAABlCAAAEQ0AAAQDAABBDgAAtAAAAHoKAACUCQAAZA0AAEwIAADVCwAAtAYAALEGAABlDgAAngkAAOAAAADEDAAAJQQAALYKAAAHCgAAxgcAABICAACgAAAAQAYAAOEFAABcDgAACgEAAE4HAAAjBgAApggAAGMBAABiDgAAqAQAACAOAAAuAQAABAIAAPIBAABOAgAAygYAADQKAACZDQAAQQUAAHcBAAAmDAAAVAgAAJQCAAAfCQAACwkAAFYNAAAAAAAAAADeGvDnYyc2/cpXJF4rGIQz9Mh+wLQEiWnDnD2D7sfW6A0EWFdiMouYoWoEGDFdYChIHGb1y1W32o+GI8bpsg4DgDpRJ74s0ME95R9K/nE4ZjsUOtJh3xy2S33H2g7Dre5cAZf2DDlpG0ujt+U2bdoeTryL1Hc7oJ8dmtpAZPSyeTgv7P3YQFkBqh6GvSc2f92iqItRONd2IF/22HFeKLVV7z6tBoDbRA1iiSpYs+J35Rr7nbtoYUBfuMue4WfnooJnMMzniHldxWN97a6tHWx8f/FWYYr57I79TUyzPWKleuan8IIVjl2gntZX6XKRsJtfIWJ0kED2bUM+6TosqIgA13LGBizoZu+UtcGyoQIba5ywUxwAMOmlr4I/1qQidPVOVhIAyapudrlx39l9RMpBIn2delRsAKeHIFWoqY9LcUHLZEruG6HwQdxhjU8QKGu2/LMmhPmg4VZqd6hVxMwqJm6Ysd9/UQfbrDh3CnFXd/fp8avaJOtHK4HzhKL3m3wQN2ffdnWLNqqsSdfAKNfkEv6watIgTgGCUYZdi8xj4xC7Z9IJdgCCXboALtoUhQKpDnGjRzCo7uhlXSXuLandSWXGBcAE2pr9Lg0YHx8mbcqDs31av5zfE3foohjaki8QIuR0TH9ApDPVpBgjj8/IP+9Zanksg4jH5vFIGzeCI5rcCPw5sCBLQw5JgxqDu4KnH2MogCi14p5bq2WN9on6U4B9RobRjo3ODidq4v5uRCpuoPrSWaFyJyVe3QW5vEuETi+ZBXX61I/VWXIASgCe7Gc7H1aOJ/neCx9hc7CIFFDb5ZPO0z6zcspq/AAvcdskvu+cfp3z9SY1uvlWmGHeTUQhJGNrzxgphquKIyr5rplCPbTA6pWy5u9tmRlEXdhpi6+6DUx4uO7Wc/bwadH6OwtgFFurHmGubj1z/DX95CnRIJd6PqFMyITF6HedwH0dcl4O4kh9vG1NDJ4PBLq4147NHkg6gPtoE0rW5TToEay/VYrW7wHfVGMqLDEDPMTIDBDozqE04vFhpM/9pdY4Y/rxT60w4OeN7MnkEFPKZdaFDtgkAEEKinKXdUox4a2L8cc1EOwWlyonWuDXT9KdlT74d5f8E2K55sQ7l2ucXAsbWB6LlFTob3Wu+6VfMTqf+d4LOGoWjt1keyko2QC+if3VvPa0EgHoDwgiTha8WbSJmpyLkCSfBMk/JhkrwJR07nKmiHRD6ufdIShi8j/GpiFznT9iMvjZNbcsdOrnvU1yrF6jFtBARq60rW76PRGJd372tiNVErx5y1K7Fnb79WPZ7kbgI5BQM1ePrIOJ3vemovts7wYqHZmgKkl9gy84t7cLIE7JqFTtpYPKxWU57uxaFXJ5jwVcrtGrP/hH0q4nVvPLfb2o2/mnfUmBX1Y0ZzpbIm67viixrXF7HmhbptLUo25wbHEvsDh40BG72U96dta96q9AapfLGs9MLb2RTNZ2rLrnw/rIK3E1Q+wW9dIhAKaQnLojlDjVo1Gg4oN65YQ5RC2TkrLb874+CiaqtCT7KiwWAK4cUhiCER+oJ0jsulxn27CljG3ytKf744kRK+4tpLdWY+XVHfEUEYCTMsx2UE/IQthzVZy+I0sGH26NcOUwe4KPllZ2kb69kXvsX4HahZM6SOcVuU4al0CazvyChaCaY7ZJ5bj4UrAZtMMh0MLJKpnZUyj8GsEzdP4V28LAOwvaUvvJkZ7ZQfQ3+wSK+MV80KNiqDF3nEj0FnG54nbsWHm3Rn7G/pj6/hIyxB68qHo4mAseXZHYYrSy1HssIF5+SaKK0bJHtdALZ6gfRdcqOGz1gEpqzvnm3eLIFCodzd6zsnp6MtXH8OE5E/XouR3ciJsONp4TFHqnovLOfqGm7JjIa5FcrwWVLY9nMLsE/STF6oqND5c/n54A0Y7i+HFAkiVcH06Kf9eWdwgPq+K9oqTOCJIWGN0BicrxXNx1sjQdJp2Vp93VOmuy9paOL/K7QS7pE+/eKnlHWpSCmCP6IMPT8IVEKPrF+M0nYyFGclnXNRuti55EPvojTk1IUqFIttXRuj5sdhkzIxoitsZYAOc7qWIHTJMlj7GJIdmsfKUr3qtKdLcbar4CemeEIYc0yk1lDag/QGlCrCuL4VU+haZ09dcaDYswHz+jBdEsn20qVVaLR2/8651BCMaLj4dowvPADyuuGbzBNOxomzqXFgy8YIv+sj02dwo52ATDo4+2OkLdao9CezyYyROBk09jqfG5zi76aQ+1iZcgdUC4/JBdsWD2uap8euNPZucqtOK51S4SCtRgutAyJ9/3IQb73syBJOHua+9HPVNKqwMni9SzZZ4RpvK7+/WPxJHJhFndUoYbqI8Bymk9ysuBFg/MCw=="; int rc = DxyVest.Start(key);//AppVest.init("553c12676eb80b82183e0944df97cd19", "K8N/nk3cAxhGo7Oy0yoP/Ye5jcQUaMf+8+AutonLIoCXTbHXSHJ/D8W3/iIBHJq/4SABnAF7RvIeNRnF+x+wjB6cB1TEwIUviviQlofNvM4qJFLH55ON85n2pFBhSGW3qLF/"); if (rc != 150) { Debug.LogError("wwwwwwwwwwwwwwwwwwwwwww init failed"); ShowTip("GF init failed!", () => { StartCoroutine(CheckNet()); }); } // Debug.LogError("init successful"); conn.ip = "127.0.0.1"; conn.port = 29898; //int rc1 = AppVest.getServerIPAndPort(ref conn, "", 8077); //if (rc1 != 0) //{ // ShowTip("getServerIPAndPort failed!", () => // { // StartCoroutine(CheckNet()); // }); // yield break; //} } init_url = "http://" + conn.ip + ":" + conn.port + "/NewFK/config/init2_1.json"; Debug.LogError("init_url : " + init_url); } // Debug.LogError("开始下载资源===>>>"); // Debug.LogError(init_url); //Debug.LogError("init_url============================ "+ init_url); float downTimeOut = 5; using (WWW request1 = new WWW(init_url)) { float timeOut = Time.time; float process = request1.progress; while (request1!=null && request1.isDone==false) { //Debug.LogError("wwwwwwwwwwwwwwwwwww11111111111111111111111"); if(processdownTimeOut) { ShowTip("资源配置下载失败,请检查您的网络设置!", () => { StartCoroutine(CheckNet()); }); yield break; } yield return null; } yield return request1; // Debug.LogError("request1.error"+request1.error); if (string.IsNullOrEmpty(request1.error)) { //Debug.LogError("wwwwwwwwwwwwwwwww222222222222222222222222"); json_data = request1.text; //优化 GameApplication.Instance.GameInfo = json_data; Hashtable json = Json.Deserialize(json_data) as Hashtable; //json["pack_url"] = "http://8.134.59.224:8909/NewFKtest"; Hotupdate.PackUrl = (string)json["pack_url"]; Hashtable _plat_data = null; #if UNITY_IPHONE _plat_data = json["iOS"] as Hashtable; #endif #if UNITY_ANDROID _plat_data = json["Android"] as Hashtable; #endif #if UNITY_STANDALONE _plat_data = json["Win"] as Hashtable; #endif var check = _plat_data[string.Format("check{0}", GameApplication.AppVersion.ToString())]; if (check != null && (bool)check) { GameApplication.HideSdk = true; GameApplication.Instance.accountTest = false; } Version server_version = new Version((string)_plat_data["version"]); if (!GameApplication.HideSdk) { if (GameApplication.AppVersion.max_version < server_version.max_version || (GameApplication.AppVersion.max_version == server_version.max_version && GameApplication.AppVersion.min_version < server_version.min_version)) { ShowTip("您版本需要更新!", () => { #if UNITY_ANDROID StartCoroutine(DownApp((string)_plat_data["appurl"], server_version.ToString())); #else DeleteOldPack(); Application.OpenURL((string)_plat_data["appurl"]); Application.Quit(); #endif }); yield break; } } Voice.VoiceUpload = json["voice_upload_url"] as string; Voice.VoiceDownload = json["voice_download_url"] as string; //GameApplication.PackVersion = server_version.pack_version; if (!GameApplication.Instance.buildApp) { GameApplication.AppVersion.FillData(server_version); _version_view.Dispose(); GameApplication.Instance.StartGame(); } else { StartCoroutine(CheckAssetConfig(server_version)); } } else { ShowTip("资源配置下载失败,请检查您的网络设置!", () => { StartCoroutine(CheckNet()); }); //yield break; } } } IEnumerator CheckAssetConfig(Version server_version) { GObject v_tex_info = _version_view.GetChild("tex_info"); Version local_version = Hotupdate.GetLocalVersion(string.Empty); ArrayList asset_config_list = null; string asset_config_text = null; if (local_version == null || local_version.ContainAll(server_version)) { string ac_url=""; if(isGFF==false) ac_url = string.Format("{0}/config/asset_config{1}.json", Hotupdate.PackUrl, server_version.ToString()); else ac_url = string.Format("http://{0}/NewFK/config/asset_config{1}.json", conn.ip + ":" + conn.port, server_version.ToString()); // Debugger.LogError("CheckAssetConfig===>>>"); // Debugger.LogError(ac_url); float downTimeOut = 5; using (var request = new WWW(ac_url)) { float timeOut = Time.time; float process = request.progress; while (request != null && request.isDone == false) { if (process < request.progress) { timeOut = Time.time; process = request.progress; } if (Time.time - timeOut > downTimeOut) { ShowTip("游戏配置下载异常,请检查您的网络设置!", () => { StartCoroutine(CheckNet()); }); yield break; } yield return null; } yield return request; if (string.IsNullOrEmpty(request.error)) { asset_config_text = request.text; asset_config_list = Json.Deserialize(asset_config_text) as ArrayList; if (asset_config_list == null) { ShowTip("游戏配置下载异常,请检查您的网络设置!", () => { StartCoroutine(CheckAssetConfig(server_version)); }); yield break; } // v_tex_info.text = "正在检查资源。。。"; GSlider _pd = _version_view.GetChild("pb_progress").asSlider; _pd.value = 0.0; //开始检查所有资源 bool size_check = false; long total_size = 0; StartCoroutine(VersionUpdateCheckSize2(asset_config_list, (all_size, finish) => { total_size = all_size; size_check = finish; })); while (!size_check) { yield return null; } Debug.Log($"总大小:{(total_size / 1024f / 1024f):F2} MB"); bool ver_check = false; StartCoroutine(VersionUpdateCheck(asset_config_list, (progress, finish) => { if (ver_check) { _pd.value = 100f; ver_check = finish; } else { v_tex_info.text = $"正在下载资源({(progress / 1024f / 1024f):F2} MB/{(total_size / 1024f / 1024f):F2} MB)"; _pd.value = progress / total_size * 100f; ver_check = finish; } })); while (!ver_check) { yield return null; } bool unZip_check = false; v_tex_info.text = "正在解压文件(该过程不消耗流量)"; _pd.value = 100f; StartCoroutine(VersionUpdateUnZip(asset_config_list, (finish) => { unZip_check = finish; })); while (!unZip_check) { yield return null; } string arv = string.Format("{0}asset_config{1}.json", ResourcesManager.PACK_PATH, server_version.ToString()); File.WriteAllText(arv, asset_config_text, System.Text.Encoding.UTF8); string rv = ResourcesManager.PACK_PATH + "version.txt"; File.WriteAllText(rv, server_version.ToString(), System.Text.Encoding.UTF8); } else { ShowTip("游戏资源下载失败,请检查您的网络设置!", () => { StartCoroutine(CheckAssetConfig(server_version)); }); yield break; } } }else { // string arv = string.Format("{0}asset_config{1}.json", ResourcesManager.PACK_PATH, server_version.ToString()); string arv =ResourcesManager.PACK_PATH+"asset_config"+server_version.ToString()+".json"; //Debug.LogError("ARV===>>>" + arv); try { asset_config_text = File.ReadAllText(arv); asset_config_list = Json.Deserialize(asset_config_text) as ArrayList; foreach (Hashtable tem in asset_config_list) { string b_path = "base/" + tem["name"]; ResourcesManager.ReadAssetConfig(b_path); } } catch (Exception s) { Debug.LogError(s.ToString()); ShowTip("游戏资源损坏,请重新安装新包!", () => { StartCoroutine(CheckAssetConfig(server_version)); }); yield break; } //IEnumerator enumerator = asset_config_list.GetEnumerator(); //try //{ // while (enumerator!=null && enumerator.MoveNext()) // { // Hashtable hashtable = (Hashtable)enumerator.Current; // string base_path = "base/" + hashtable["name"].ToString(); // ResourcesManager.ReadAssetConfig(base_path); // yield return null; // } //} //finally //{ // IDisposable disposable; // if ((disposable = (enumerator as IDisposable)) != null) // { // disposable.Dispose(); // } //} } GameApplication.AppVersion.FillData(server_version); v_tex_info.text = "正在加载资源请稍后。。"; //ResourcesManager.Init(); yield return null; _version_view.Dispose(); GameApplication.Instance.StartGame(); } /// /// 检查基本更新包 /// /// /// /// /// IEnumerator VersionUpdateCheck(ArrayList asset_config_list, System.Action onback) { Version local_version = Version.DEFUALT; float download_size = 0; for(int i=0;i< asset_config_list.Count; ++i) { var tem = asset_config_list[i] as Hashtable; string b_path = "base/" + tem["name"].ToString(); Hotupdate version_update = new Hotupdate(b_path + "/", local_version, new Version((string)tem["ver"])); version_update.AssetName = b_path; version_update.HideDetail = true; version_update.SetTipCallback((text,callback)=> { ShowTip(text, callback); }); version_update.LoadAsset(); while (!version_update.Done) { onback(download_size + version_update.Progress* (float)tem["size"], false); yield return null; } download_size += (float)tem["size"]; ResourcesManager.ReadAssetConfig(b_path); } onback(1, true); } /// /// 检查基本更新包大小 /// /// /// /// /// IEnumerator VersionUpdateCheckSize(ArrayList asset_config_list, System.Action onback) { Version local_version_one = Version.DEFUALT; long totalSize = 0; for (int i = 0; i < asset_config_list.Count; ++i) { var tem_one = asset_config_list[i] as Hashtable; string b_path_one = "base/" + tem_one["name"].ToString(); local_version_one = Hotupdate.GetLocalVersion(b_path_one); var update_pack2 = local_version_one == null || local_version_one.ContainAll(new Version((string)tem_one["ver"])); string osPath = ResourcesManager.OS_Dir; if (update_pack2) { var pack_path = string.Format("{0}/asset_pack{1}.bytes", b_path_one, (string)tem_one["ver"]); var url = ""; if (VerCheck.Instance.isGFF == false && VerCheck.Instance.isDXYGFF == false) url = string.Format("{0}/{1}/{2}", Hotupdate.PackUrl, osPath, pack_path); else url = string.Format("{0}/{1}/{2}", "http://" + VerCheck.Instance.conn.ip + ":" + VerCheck.Instance.conn.port + "/NewFKN", osPath, pack_path); url = string.Format("{0}/{1}/{2}", Hotupdate.PackUrl, osPath, pack_path); if (Application.platform == RuntimePlatform.WindowsEditor) Debug.Log("check_url:" + url); using (UnityWebRequest head = UnityWebRequest.Head(url)) { yield return head.SendWebRequest(); #if UNITY_2020_2_OR_NEWER if (head.result == UnityWebRequest.Result.Success) #else if (!head.isNetworkError && !head.isHttpError) #endif { string len = head.GetResponseHeader("Content-Length"); if (!string.IsNullOrEmpty(len) && long.TryParse(len, out long size)) { totalSize += size; tem_one["size"] = size; yield return null; } else { Debug.LogWarning($"无法获取文件大小: {url}"); yield return 0L; } } else { Debug.LogError($"获取文件大小失败: {head.error}"); yield return 0L; } } } } onback(totalSize, true); } IEnumerator VersionUpdateCheckSize2(ArrayList asset_config_list, System.Action onback) { Version local_version = Version.DEFUALT; long totalSize = 0; for (int i = 0; i < asset_config_list.Count; ++i) { var tem = asset_config_list[i] as Hashtable; string b_path = "base/" + tem["name"].ToString(); Hotupdate version_update = new Hotupdate(b_path + "/", local_version, new Version((string)tem["ver"])); version_update.AssetName = b_path; version_update.HideDetail = true; version_update.SetTipCallback((text, callback) => { ShowTip(text, callback); }); version_update.LoadAssetSize(); while (!version_update.Done) { yield return null; } tem["size"] = version_update.Size; totalSize += (long)version_update.Size; ResourcesManager.ReadAssetConfig(b_path); } onback(totalSize, true); } /// /// 解压下载的资源文件 /// /// /// /// IEnumerator VersionUpdateUnZip(ArrayList asset_config_list, System.Action onback) { for (int i = 0; i < asset_config_list.Count; ++i) { var tem = asset_config_list[i] as Hashtable; string b_path = "base/" + tem["name"].ToString(); ResourcesManager.ReadAssetConfig(b_path); yield return null; } onback(true); } #if UNITY_ANDROID IEnumerator DownApp(string appurl,string version) { var v_tex_info = _version_view.GetChild("tex_info"); v_tex_info.text = "正在下载新的安装包(0KB/0KB)"; var _pd = _version_view.GetChild("pb_progress").asSlider; var request = new BestHTTP.HTTPRequest(new System.Uri(appurl)); request.EnableTimoutForStreaming = false; request.UseStreaming = true; request.IsKeepAlive = true; request.Send(); var filePath = Application.persistentDataPath + "/update" + version + ".apk"; if (File.Exists(filePath)) { File.Delete(filePath); } FileStream stream = null; request.OnProgress = (originalRequest, downloaded, downloadLength) => { v_tex_info.text = string.Format("正在下载新的安装包({0}KB/{1}KB)", downloaded / 1024, downloadLength / 1024); _pd.value = (downloaded / (float)downloadLength) * 100; var fragments = originalRequest.Response.GetStreamedFragments(); if (fragments != null) { if (stream == null) { stream = File.Create(filePath); } foreach(byte[] buffer in fragments) { stream.Write(buffer, 0, buffer.Length); } } }; while (request.State < BestHTTP.HTTPRequestStates.Finished) { yield return null; } yield return new WaitForSeconds(1); stream.Dispose(); request.OnProgress = null; if (request.State == BestHTTP.HTTPRequestStates.Finished && request.Response.IsSuccess) { DeleteOldPack(); PlatformAndroid.Instance.UpdateApp(filePath); } else { ShowTip("请检查您的网络设置!", () => { StartCoroutine(DownApp(appurl, version)); }); } } #endif public void ShowTip(string text, System.Action callback) { var ctr_state = _version_view.GetController("state"); ctr_state.selectedIndex = 1; _version_view.GetChild("tex_tip").text = text; _version_view.GetChild("btn_ok").onClick.Set(() => { ctr_state.selectedIndex = 0; if (callback != null) callback(); }); } public IEnumerator CopyFromStreamingAssetsCoroutine(string relativePath, string toFolder = null, System.Action onDone = null) { if (string.IsNullOrEmpty(toFolder)) toFolder = Application.persistentDataPath; string sourcePath = Path.Combine(Application.streamingAssetsPath, relativePath); string destPath = Path.Combine(toFolder, relativePath); if (File.Exists(sourcePath)) { yield return null; } Directory.CreateDirectory(Path.GetDirectoryName(destPath)); #if UNITY_ANDROID && !UNITY_EDITOR // Android: streamingAssets 在 apk 内,需要 UnityWebRequest using (UnityWebRequest uwr = UnityWebRequest.Get(sourcePath)) { yield return uwr.SendWebRequest(); if (uwr.isNetworkError || uwr.isHttpError) { Debug.LogError("读取失败: " + sourcePath + " 错误: " + uwr.error); onDone?.Invoke(null); yield break; } byte[] data = uwr.downloadHandler.data; File.WriteAllBytes(destPath, data); Debug.Log("复制完成(Android): " + destPath); onDone?.Invoke(destPath); } #else // 非 Android:直接从文件系统读取 if (!File.Exists(sourcePath)) { Debug.LogError($"源文件不存在: {sourcePath}"); onDone?.Invoke(null); yield break; } byte[] data = File.ReadAllBytes(sourcePath); File.WriteAllBytes(destPath, data); Debug.Log($"复制完成: {destPath}"); onDone?.Invoke(destPath); yield break; #endif } /// /// 移除本地缓存包 /// public static void DeleteOldPack() { string dir = ResourcesManager.RES_PATH; string rv = dir + "version.txt"; if (File.Exists(rv)) File.Delete(rv); if (Directory.Exists(dir)) Directory.Delete(dir, true); } }