簡體   English   中英

當我嘗試遞增和循環打印數字時,程序停止響應

[英]Program stops responding when I try to increment and print a number in a loop

我在C#中具有以下代碼:

void Update () {
    for (int m=0;m<122132343243243;m++)
    {
        print(m);
    }
}

當我嘗試運行時,Unity停止響應。 如何獲得此功能以完成執行?

代碼的主要問題是您要計算機一次完成大量工作,因此計算機停止響應。 計算多達122萬億美元是一項漫長的任務,這本身將需要至少20天的時間(請參閱計算多達一萬億美元的估計數),而且您要打印每個數字,這會使情況更加復雜。

您需要做的是允許計算機通過使用協程將這項工作分散到多個幀中。 (您可以改用其他線程來防止鎖定,但是協程是解決此問題的更簡單的Unity方法。)

您的代碼可以如下重寫:

void Start() {
    StartCoroutine("CountAndPrint");
}

IEnumerator CountAndPrint() {
    for (long m=0; m<122132343243243; m++) {
        print(m);
        yield return null;
    }
}

注:我也切換longint ,丹尼爾指出,價值m ,否則將溢出,你應該讓它運行足夠長的時間。

這段代碼的主要區別在於,它基本上允許程序在每次遞增計數之后“暫停”該方法的執行,從而將其余工作保存下來,以備將來使用。 這將允許您在計數器增加的同時繼續與程序進行交互。

希望這可以幫助! 如果您有任何疑問,請告訴我。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM