Unity SerializeField序列化字段導(dǎo)致Bug的跳坑筆記

偶遇Bug

筆者完成了序列幀播放模塊蒸苇,結(jié)果在測試時,第一次調(diào)用播放方法時沒反應(yīng)哮洽,第二次調(diào)用才播放填渠。

BUG演示

為了解決無法知道筆者何時點擊了鼠標,不得不在方法體里面萌萌噠的輸出這些話:

            string[] msg = new string[3] { "第1次點擊鸟辅,居然不播放動畫氛什!", "第", "次點擊,動畫有播放~" };
            Debug.Log(count == 0 ? msg[0] : (msg[1] + (count + 1) + msg[2]));
            count++;

解決Bug

這是一個Bug匪凉,不能忍枪眉!
幾經(jīng)調(diào)試,問題終于找到了再层,就是這個[SerializeField]搞的鬼贸铜!
來來堡纬,我們調(diào)試一下:

代碼:

字段:
[SerializeField] Texture[] EmojFrame = null; //存儲動畫幀的Texture數(shù)組
方法體內(nèi):
EmojFrame = EmojFrame ?? EmojManager.GetInstance.GetExpTextureByModelName(model.name, index);
//上下2句代碼是關(guān)聯(lián)的,后面對象中的那個方法得到的是Texture數(shù)組

斷點調(diào)試:

Bug就出現(xiàn)在這個節(jié)骨眼

如上所示蒿秦,這樣導(dǎo)致了后續(xù)代碼中的條件( 如下:)不能滿足而不能實現(xiàn)序列幀的播放烤镐。

“0”會小于“0”?``IF``內(nèi)的代碼執(zhí)行的了才叫真的怪事了

總結(jié):

本為了便于觀察Texture而列化了該數(shù)組棍鳖,導(dǎo)致數(shù)組賦null失效炮叶,可空合并運算首次運行無法為EmojFrame數(shù)組賦值(Tips:??可空合并運算符)最終導(dǎo)致了文章剛開始動畫見到的現(xiàn)象。

躲坑:

  1. 如果字段在后續(xù)邏輯中會判斷null渡处,建議不要序列化該字段
  2. 如果一定要序列化镜悉,防止掉坑里,建議:
  3. 在start函數(shù)賦值null医瘫;
  4. 如果是數(shù)組這樣的字段侣肄,邏輯中不判斷null改為判斷長度是否為0

2019.03.07補充

隨著對unity序列化和反序列化機制的深入理解,這個問題也就能很好的理解和解釋啦醇份。
每一個場景稼锅,預(yù)制體都會反序列化到文件中。如果標記了序列化被芳,私有字段也會序列化到文件里面缰贝。反序列化的時候自然就會實例化這個字段并賦值了…

標簽:Unity3D、腳本編程畔濒、[SerializeField]剩晴、可空合并運算符


快捷訪問:

  1. Unity3D 如何設(shè)置CubeMap
  2. UGUI Button OnClick事件統(tǒng)一管理
  3. UGUI Slider onValueChanged事件統(tǒng)一管理
  4. UGUI Toggle onValueChanged事件統(tǒng)一管理
  5. Unity3D監(jiān)測按鍵輸入(快捷鍵)的有效方法
  6. Unity3D Editor模式下的System.IO數(shù)據(jù)訪問
  7. Unity3D 掛載的腳本取消勾選居然還會運行!侵状!
  8. Unity 代碼動態(tài)勾選或取消材質(zhì)球上的選項
  9. Unity SerializeField序列化字段導(dǎo)致Bug的跳坑筆記 ←您在這里
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末赞弥,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子趣兄,更是在濱河造成了極大的恐慌绽左,老刑警劉巖,帶你破解...
    沈念sama閱讀 212,816評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件艇潭,死亡現(xiàn)場離奇詭異拼窥,居然都是意外死亡,警方通過查閱死者的電腦和手機蹋凝,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,729評論 3 385
  • 文/潘曉璐 我一進店門鲁纠,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人鳍寂,你說我怎么就攤上這事改含。” “怎么了迄汛?”我有些...
    開封第一講書人閱讀 158,300評論 0 348
  • 文/不壞的土叔 我叫張陵捍壤,是天一觀的道長骤视。 經(jīng)常有香客問我,道長鹃觉,這世上最難降的妖魔是什么专酗? 我笑而不...
    開封第一講書人閱讀 56,780評論 1 285
  • 正文 為了忘掉前任,我火速辦了婚禮帜慢,結(jié)果婚禮上笼裳,老公的妹妹穿的比我還像新娘。我一直安慰自己粱玲,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 65,890評論 6 385
  • 文/花漫 我一把揭開白布拜轨。 她就那樣靜靜地躺著抽减,像睡著了一般。 火紅的嫁衣襯著肌膚如雪橄碾。 梳的紋絲不亂的頭發(fā)上卵沉,一...
    開封第一講書人閱讀 50,084評論 1 291
  • 那天,我揣著相機與錄音法牲,去河邊找鬼史汗。 笑死,一個胖子當(dāng)著我的面吹牛拒垃,可吹牛的內(nèi)容都是我干的停撞。 我是一名探鬼主播,決...
    沈念sama閱讀 39,151評論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼悼瓮,長吁一口氣:“原來是場噩夢啊……” “哼戈毒!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起横堡,我...
    開封第一講書人閱讀 37,912評論 0 268
  • 序言:老撾萬榮一對情侶失蹤祠墅,失蹤者是張志新(化名)和其女友劉穎往产,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,355評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡袭祟,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,666評論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了昏名。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片渠抹。...
    茶點故事閱讀 38,809評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖胚泌,靈堂內(nèi)的尸體忽然破棺而出省咨,到底是詐尸還是另有隱情,我是刑警寧澤玷室,帶...
    沈念sama閱讀 34,504評論 4 334
  • 正文 年R本政府宣布零蓉,位于F島的核電站笤受,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏敌蜂。R本人自食惡果不足惜箩兽,卻給世界環(huán)境...
    茶點故事閱讀 40,150評論 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望章喉。 院中可真熱鬧汗贫,春花似錦、人聲如沸秸脱。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,882評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽摊唇。三九已至咐蝇,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間巷查,已是汗流浹背有序。 一陣腳步聲響...
    開封第一講書人閱讀 32,121評論 1 267
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留岛请,地道東北人旭寿。 一個月前我還...
    沈念sama閱讀 46,628評論 2 362
  • 正文 我出身青樓,卻偏偏與公主長得像崇败,于是被迫代替她去往敵國和親盅称。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,724評論 2 351

推薦閱讀更多精彩內(nèi)容