看板 GameDesign 關於我們 聯絡資訊
各位學長好 最近在寫Unity的時候發現一個問題 只要我用List初始化器去設定類別的屬性欄位 並在建立物件時就會閃退 例如: public List<Duck> ducks = new List<Duck>() { new Duck() { Kind = KindOfDuck.Decoy, Size = 17 }, }; Visual Studio裡面也沒出現錯誤 (把初始化器的內容刪除就不會閃退) 但是如果是下面這種用法就又不會閃退 public List<string> Test = new List<string>() { "100", "200", }; 如下例,單純C#可以執行 但掛在Unity底下就會導致整個Unity閃退 https://dotnetfiddle.net/QbNFrt 請問這是Unity的限制還是個案呢? 不能用初始化器感覺好麻煩 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 59.125.120.238 (臺灣) ※ 文章網址: https://www.ptt.cc/bbs/GameDesign/M.1575355606.A.238.html
beiluoshimen: use [SerilizeField]? 12/03 19:11
[SerializeField]是用在屬性嗎? 如果是的話我用了一樣會閃退
wix3000: 多一對括號應該編譯不過吧 12/03 20:37
berice152233: 請問多一對括號是指? 12/03 21:54
原本以為是電腦的問題 回家嘗試了之後發現一樣也閃退 好奇怪啊... ※ 編輯: berice152233 (106.105.207.206 臺灣), 12/03/2019 22:05:54
nimajneb34: 有試過在Duck寫Constructor然後在mew List<Duck>的時 12/03 22:27
nimajneb34: 候使用嗎 12/03 22:27
有! 寫好建構子之後,在List初始化器中 new Duck(KindOfDuck.Decoy,17), 這樣也是會閃退 大家的Unity都沒這個問題嗎? ※ 編輯: berice152233 (106.105.207.206 臺灣), 12/03/2019 22:49:28 以下是我弄來重現問題的程式 https://imgur.com/hT1pRsD 結果發現這樣的錯誤碼 StackOverflowException: The requested operation caused a stack overflow. 但還是搞不懂原因 ※ 編輯: berice152233 (106.105.207.206 臺灣), 12/03/2019 23:02:03
kookll2: 這樣好像是無限迴圈的問題 12/03 23:06
kookll2: 你new一個類別然後自己的list又new了自己 12/03 23:14
kookll2: 就變成無限迴圈了 12/03 23:14
啊!非常感謝 我真的是犯了一個很基礎的錯誤 ※ 編輯: berice152233 (106.105.207.206 臺灣), 12/03/2019 23:25:52
wix3000: 你範例的第一行 new 後面就多一對括號啊 XD 12/04 01:07