Przeglądaj źródła

资源释放,资源回收

lvjincheng 3 lat temu
rodzic
commit
eb5339a07a

+ 19 - 10
Assets/BowArrow/Scripts/Entry.cs

@@ -25,6 +25,14 @@ public class Entry : MonoBehaviour
         //SetTip("正在检测对比软件版本", Color.white);
         //SetTip("正在检测对比软件版本", Color.white);
         StartCoroutine(CheckAppVersion());
         StartCoroutine(CheckAppVersion());
         StartCoroutine(AsyncLoadScene());
         StartCoroutine(AsyncLoadScene());
+
+        SceneManager.sceneUnloaded += (scene) => {
+            long t1 = JC.CS.Utility.GetTimestamp();
+            Resources.UnloadUnusedAssets();
+            System.GC.Collect();
+            long t2 = JC.CS.Utility.GetTimestamp();
+            Debug.Log($"场景{scene.name}销毁,释放资源和GC回收的总耗时={t2 - t1}ms");
+        };
     }
     }
 
 
     [SerializeField] Text versionText;
     [SerializeField] Text versionText;
@@ -33,19 +41,20 @@ public class Entry : MonoBehaviour
 
 
     IEnumerator CheckAppVersion() {
     IEnumerator CheckAppVersion() {
         string url = CommonConfig.businessServerURI + "/app/checkAppVersion?appVersion=" + appVersion;
         string url = CommonConfig.businessServerURI + "/app/checkAppVersion?appVersion=" + appVersion;
-        UnityWebRequest request = UnityWebRequest.Get(url);
-        yield return request.SendWebRequest();
-        if (request.result == UnityWebRequest.Result.Success) {
-            appVersionCheckOK = bool.Parse(request.downloadHandler.text);
-            if (appVersionCheckOK) {
-                //等场景加载完再提示
+        using (UnityWebRequest request = UnityWebRequest.Get(url)) {
+            yield return request.SendWebRequest();
+            if (request.result == UnityWebRequest.Result.Success) {
+                appVersionCheckOK = bool.Parse(request.downloadHandler.text);
+                if (appVersionCheckOK) {
+                    //等场景加载完再提示
+                } else {
+                    SetTip("请安装最新版本软件", Color.yellow);
+                    DelayQuit();
+                }
             } else {
             } else {
-                SetTip("请安装最新版本软件", Color.yellow);
+                SetTip("读取服务端软件版本配置失败", Color.red);
                 DelayQuit();
                 DelayQuit();
             }
             }
-        } else {
-            SetTip("读取服务端软件版本配置失败", Color.red);
-            DelayQuit();
         }
         }
     }
     }
 
 

+ 10 - 8
Assets/BowArrow/Scripts/Manager/LoginMgr/AgreementView.cs

@@ -31,18 +31,20 @@ public class AgreementView : MonoBehaviour
     //http
     //http
     IEnumerator GetUserAgreement() {
     IEnumerator GetUserAgreement() {
         string url = CommonConfig.businessServerURI + "/app/getUserAgreement" + GetLanguageParam();
         string url = CommonConfig.businessServerURI + "/app/getUserAgreement" + GetLanguageParam();
-        UnityWebRequest request = UnityWebRequest.Get(url);
-        yield return request.SendWebRequest();
-        if (request.result == UnityWebRequest.Result.Success) {
-            GetContentText().text = "\n" + request.downloadHandler.text;
+        using (UnityWebRequest request = UnityWebRequest.Get(url)) {
+            yield return request.SendWebRequest();
+            if (request.result == UnityWebRequest.Result.Success) {
+                GetContentText().text = "\n" + request.downloadHandler.text;
+            }
         }
         }
     }
     }
     IEnumerator GetPrivacyAgreement() {
     IEnumerator GetPrivacyAgreement() {
         string url = CommonConfig.businessServerURI + "/app/getPrivacyAgreement" + GetLanguageParam();
         string url = CommonConfig.businessServerURI + "/app/getPrivacyAgreement" + GetLanguageParam();
-        UnityWebRequest request = UnityWebRequest.Get(url);
-        yield return request.SendWebRequest();
-        if (request.result == UnityWebRequest.Result.Success) {
-            GetContentText().text = "\n" + request.downloadHandler.text;
+        using (UnityWebRequest request = UnityWebRequest.Get(url)) {
+            yield return request.SendWebRequest();
+            if (request.result == UnityWebRequest.Result.Success) {
+                GetContentText().text = "\n" + request.downloadHandler.text;
+            }
         }
         }
     }
     }
 
 

+ 8 - 7
Assets/BowArrow/Scripts/Network/HttpController/CaptchaController.cs

@@ -11,12 +11,13 @@ public class CaptchaController : Singleton<CaptchaController>
     public IEnumerator GetCaptcha(Image targetRenderImage, Action<int> cb)
     public IEnumerator GetCaptcha(Image targetRenderImage, Action<int> cb)
     {
     {
         int code = UnityEngine.Random.Range(1000, 10000);
         int code = UnityEngine.Random.Range(1000, 10000);
-        UnityWebRequest uwr = new UnityWebRequest(CommonConfig.businessServerURI + "/api/createCaptcha?code=" + code, UnityWebRequest.kHttpVerbGET);
-        uwr.downloadHandler = new DownloadHandlerTexture();
-        yield return uwr.SendWebRequest();
-        Texture2D texture = DownloadHandlerTexture.GetContent(uwr);
-        Sprite sprite = Sprite.Create(texture, new Rect(0, 0, texture.width, texture.height), new Vector2(0.5f, 0.5f));
-        targetRenderImage.sprite = sprite;
-        if (cb != null) cb(code);
+        using (UnityWebRequest uwr = new UnityWebRequest(CommonConfig.businessServerURI + "/api/createCaptcha?code=" + code, UnityWebRequest.kHttpVerbGET)) {
+            uwr.downloadHandler = new DownloadHandlerTexture();
+            yield return uwr.SendWebRequest();
+            Texture2D texture = DownloadHandlerTexture.GetContent(uwr);
+            Sprite sprite = Sprite.Create(texture, new Rect(0, 0, texture.width, texture.height), new Vector2(0.5f, 0.5f));
+            targetRenderImage.sprite = sprite;
+            if (cb != null) cb(code);
+        }
     }
     }
 }
 }

+ 20 - 16
Assets/BowArrow/Scripts/Network/HttpController/LoginController.cs

@@ -13,10 +13,11 @@ public class LoginController : Singleton<LoginController>
         WWWForm form = new WWWForm();
         WWWForm form = new WWWForm();
         form.AddField("username", username);
         form.AddField("username", username);
         form.AddField("password", password);
         form.AddField("password", password);
-        UnityWebRequest request = UnityWebRequest.Post(url, form);
-        yield return request.SendWebRequest();
-        RequestResult requestResult = JsonConvert.DeserializeObject<RequestResult>(request.downloadHandler.text);
-        if (callback != null) callback(requestResult);
+        using (UnityWebRequest request = UnityWebRequest.Post(url, form)) {
+            yield return request.SendWebRequest();
+            RequestResult requestResult = JsonConvert.DeserializeObject<RequestResult>(request.downloadHandler.text);
+            if (callback != null) callback(requestResult);
+        }
     }
     }
 
 
     public IEnumerator Register(string username, string password, Action<RequestResult> callback) {
     public IEnumerator Register(string username, string password, Action<RequestResult> callback) {
@@ -24,10 +25,11 @@ public class LoginController : Singleton<LoginController>
         WWWForm form = new WWWForm();
         WWWForm form = new WWWForm();
         form.AddField("username", username);
         form.AddField("username", username);
         form.AddField("password", password);
         form.AddField("password", password);
-        UnityWebRequest request = UnityWebRequest.Post(url, form);
-        yield return request.SendWebRequest();
-        RequestResult requestResult = JsonConvert.DeserializeObject<RequestResult>(request.downloadHandler.text);
-        if (callback != null) callback(requestResult);
+        using (UnityWebRequest request = UnityWebRequest.Post(url, form)) {
+            yield return request.SendWebRequest();
+            RequestResult requestResult = JsonConvert.DeserializeObject<RequestResult>(request.downloadHandler.text);
+            if (callback != null) callback(requestResult);
+        }
     }
     }
 
 
     public IEnumerator CompleteUserInfo(
     public IEnumerator CompleteUserInfo(
@@ -46,20 +48,22 @@ public class LoginController : Singleton<LoginController>
         form.AddField("countryCode", countryCode);
         form.AddField("countryCode", countryCode);
         form.AddField("stateCode", stateCode);
         form.AddField("stateCode", stateCode);
         form.AddField("cityCode", cityCode);
         form.AddField("cityCode", cityCode);
-        UnityWebRequest request = UnityWebRequest.Post(url, form);
-        yield return request.SendWebRequest();
-        RequestResult requestResult = JsonConvert.DeserializeObject<RequestResult>(request.downloadHandler.text);
-        if (callback != null) callback(requestResult);
+        using (UnityWebRequest request = UnityWebRequest.Post(url, form)) {
+            yield return request.SendWebRequest();
+            RequestResult requestResult = JsonConvert.DeserializeObject<RequestResult>(request.downloadHandler.text);
+            if (callback != null) callback(requestResult);
+        }
     }
     }
 
 
     public IEnumerator LoginByPhone(string phone, Action<RequestResult> callback) {
     public IEnumerator LoginByPhone(string phone, Action<RequestResult> callback) {
         string url = CommonConfig.businessServerURI + "/gameLogin/loginByPhone";
         string url = CommonConfig.businessServerURI + "/gameLogin/loginByPhone";
         WWWForm form = new WWWForm();
         WWWForm form = new WWWForm();
         form.AddField("phone", phone);
         form.AddField("phone", phone);
-        UnityWebRequest request = UnityWebRequest.Post(url, form);
-        yield return request.SendWebRequest();
-        RequestResult requestResult = JsonConvert.DeserializeObject<RequestResult>(request.downloadHandler.text);
-        if (callback != null) callback(requestResult);
+        using (UnityWebRequest request = UnityWebRequest.Post(url, form)) {
+            yield return request.SendWebRequest();
+            RequestResult requestResult = JsonConvert.DeserializeObject<RequestResult>(request.downloadHandler.text);
+            if (callback != null) callback(requestResult);
+        }
     }
     }
 }
 }