最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Unity報(bào)錯(cuò)InvalidOperationException: out of sync的解決

 更新時(shí)間:2021年05月28日 10:03:42   作者:Czhenya  
今天在做個(gè)東西,發(fā)現(xiàn)報(bào)錯(cuò),特此來(lái)記錄一下,本文介紹了Unity報(bào)錯(cuò)InvalidOperationException: out of sync的解決,感興趣的可以了解一下

Unity 報(bào)錯(cuò) 之 InvalidOperationException: out of sync

報(bào)錯(cuò)原文:

InvalidOperationException: out of sync
System.Collections.Generic.Dictionary2+Enumerator[System.Int32,UnityEngine.Transform].VerifyState () (at /Users/builduser/buildslave/mono/build/mcs/class/corlib/System.Collections.Generic/Dictionary.cs:912) System.Collections.Generic.Dictionary2+Enumerator[System.Int32,UnityEngine.Transform].MoveNext () (at /Users/builduser/buildslave/mono/build/mcs/class/corlib/System.Collections.Generic/Dictionary.cs:278)
System.Collections.Generic.Dictionary`2+KeyCollection+Enumerator[System.Int32,UnityEngine.Transform].MoveNext () (at /Users/builduser/buildslave/mono/build/mcs/class/corlib/System.Collections.Generic/Dictionary.cs:1028)
BigHandCard+c__Iterator6.MoveNext () (at Assets/Scripts/Public/HandCards.cs:781)
UnityEngine.SetupCoroutine.InvokeMoveNext (IEnumerator enumerator, IntPtr returnValueAddress) (at C:/buildslave/unity/build/Runtime/Export/Coroutines.cs:17)

在網(wǎng)上查了下是在迭代器中直接修改引起的。c#是不允許你在迭代器中直接修改。
大概是這個(gè)意思【這是個(gè)錯(cuò)誤示范

public void ShowMyCard(int[] card)
    {
        if (myCardsDic.Count > 0)
        {
            foreach (int k in myCardsDic.Keys)
            {
       if(滿足一個(gè)條件)
                   {
                        //刪除或者修改此元素
            //myCardsDic.Remove(k);
          }
            }
        }
    }

若有這樣的需求,應(yīng)該這樣寫(xiě),【大致邏輯:遍歷字典存儲(chǔ)滿足條件的元素,然后操作你剛存儲(chǔ)的元素】

    public void ShowMyCard(int[] card)
    {
        if (myCardsDic.Count > 0)
        {
            List<int> myCardsList = new List<int>();
            foreach (int k in myCardsDic.Keys)
            {
                if(滿足一個(gè)條件)
                   {
                        //保存這個(gè)元素
                     myCardsList.Add(myCardsDic[k]);
                }
            }
           foreach (int item in myCardsList)
            {
       //做你要做的事情
            }
        }
    }

而我遇到的問(wèn)題,和上面的問(wèn)題不太一樣

我的問(wèn)題:是在遍歷字典的時(shí)候使用了協(xié)程,然后有其他的情況下調(diào)用了這個(gè)字典,從而導(dǎo)致了上面的這個(gè)錯(cuò)誤的產(chǎn)生,報(bào)錯(cuò)代碼大致如下:

    public IEnumerator ShowMyCard(int[] card)
    {
        if (myCardsDic.Count > 0)
        {
            foreach (int k in myCardsDic.Keys)
            {
                float x = myCardsDic[k].localScale.x;
                myCardsDic[k].DOScaleX(0, 0.02f).OnComplete(() =>
                {
                     myCardsDic[k].DOScaleX(x, 0.02f);
                });
                yield return new WaitForFixedUpdate();
            }
        }
    }

我遇到問(wèn)題的解決辦法:在使用過(guò)程中不使用協(xié)程的方式去操作,發(fā)現(xiàn)效果也還不錯(cuò),修改代碼如下:

    public void ShowMyCard(int[] card)
    {
        if (myCardsDic.Count > 0)
        {
            foreach (int k in myCardsDic.Keys)
            {
                float x = myCardsDic[k].localScale.x;
                myCardsDic[k].DOScaleX(0, 0.02f).OnComplete(() =>
                {
                     myCardsDic[k].DOScaleX(x, 0.02f);
                });
            }
        }
    }

You are modifying the dictionary while iterating over it. This is a big no-no.
您正在修改字典,同時(shí)遍歷它。這是一個(gè)大大的禁忌。

到此這篇關(guān)于Unity報(bào)錯(cuò)InvalidOperationException: out of sync的解決的文章就介紹到這了,更多相關(guān)Unity報(bào)錯(cuò)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • c#的treeview綁定和獲取值的方法

    c#的treeview綁定和獲取值的方法

    這篇文章主要介紹了c#的treeview綁定和獲取值的方法,需要的朋友可以參考下
    2014-04-04
  • 深入理解C#中foreach遍歷的使用方法

    深入理解C#中foreach遍歷的使用方法

    在c#中通過(guò)foreach遍歷一個(gè)列表是經(jīng)常拿用的方法,使用起來(lái)也方便,下面這篇文章先給大家介紹了關(guān)于C#中foreach遍歷的使用方法,后面介紹了c#使用foreach注意的一些是,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起看看吧。
    2017-08-08
  • c# List和Dictionary常用的操作

    c# List和Dictionary常用的操作

    這篇文章主要介紹了c# List和Dictionary常用的操作,幫助大家更好的理解和學(xué)習(xí)使用c#,感興趣的朋友可以了解下
    2021-04-04
  • c#通過(guò)進(jìn)程調(diào)用cmd判斷登錄用戶權(quán)限代碼分享

    c#通過(guò)進(jìn)程調(diào)用cmd判斷登錄用戶權(quán)限代碼分享

    最近自己開(kāi)發(fā)軟件需要讀取本地配置文件,因?yàn)榈卿浻脩舻臋?quán)限不夠會(huì)導(dǎo)致無(wú)法讀取文件進(jìn)而導(dǎo)致程序崩潰,查了一些解決方法,代碼分享如下
    2013-12-12
  • C#使用對(duì)象序列化類庫(kù)MessasgePack

    C#使用對(duì)象序列化類庫(kù)MessasgePack

    這篇文章介紹了C#使用對(duì)象序列化類庫(kù)MessasgePack的方法,文中通過(guò)示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-06-06
  • c# 值類型實(shí)例構(gòu)造器

    c# 值類型實(shí)例構(gòu)造器

    CLR總是允許創(chuàng)建值類型的實(shí)例。另外值類型不一定需要定義構(gòu)造器,c#編譯器不會(huì)為值類型生成默認(rèn)的無(wú)參構(gòu)造器
    2012-10-10
  • C#的泛型方法解析

    C#的泛型方法解析

    本文講解了C#2.0引入的泛型知識(shí),主要包含泛型類、泛型接口、泛型委托,并且重點(diǎn)講解了泛型方法,已經(jīng)泛型的約束分類。最后給了一些利用泛型方法操作xml的方法。希望對(duì)大家有所幫助
    2016-12-12
  • C#實(shí)現(xiàn)簡(jiǎn)單的計(jì)算器功能

    C#實(shí)現(xiàn)簡(jiǎn)單的計(jì)算器功能

    這篇文章主要為大家詳細(xì)介紹了C#實(shí)現(xiàn)簡(jiǎn)單的計(jì)算器功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-01-01
  • 改進(jìn)c# 代碼的五個(gè)技巧(一)

    改進(jìn)c# 代碼的五個(gè)技巧(一)

    這篇文章主要介紹了改進(jìn)c# 代碼的五個(gè)技巧(一),幫助大家更好的理解和使用c#,感興趣的朋友可以了解下
    2021-01-01
  • 淺析WPF中控件拖拽與拖動(dòng)的實(shí)現(xiàn)

    淺析WPF中控件拖拽與拖動(dòng)的實(shí)現(xiàn)

    這篇文章主要為大家詳細(xì)介紹了如何在WPF中實(shí)現(xiàn)控件拖拽與拖動(dòng)的功能,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2023-12-12

最新評(píng)論

崇州市| 枣庄市| 留坝县| 义马市| 喀喇沁旗| 麟游县| 哈密市| 安远县| 三台县| 盐源县| 云安县| 随州市| 琼中| 延吉市| 万年县| 临沭县| 监利县| 乌拉特中旗| 广灵县| 金塔县| 马公市| 塘沽区| 犍为县| 沁水县| 泸州市| 汾阳市| 津市市| 兰西县| 玛纳斯县| 马公市| 漳平市| 鸡东县| 海淀区| 绥宁县| 刚察县| 西昌市| 赞皇县| 龙岩市| 夏邑县| 金平| 连城县|