作者berice152233 (WASHI)
看板GameDesign
標題[程式] Unity遇到List初始化器就閃退?
時間Tue Dec 3 14:46:42 2019
各位學長好
最近在寫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://webptt.com/m.aspx?n=bbs/GameDesign/M.1575355606.A.238.html
1F:→ beiluoshimen: use [SerilizeField]? 12/03 19:11
[SerializeField]是用在屬性嗎?
如果是的話我用了一樣會閃退
2F:推 wix3000: 多一對括號應該編譯不過吧 12/03 20:37
3F:→ berice152233: 請問多一對括號是指? 12/03 21:54
原本以為是電腦的問題
回家嘗試了之後發現一樣也閃退
好奇怪啊...
※ 編輯: berice152233 (106.105.207.206 臺灣), 12/03/2019 22:05:54
4F:推 nimajneb34: 有試過在Duck寫Constructor然後在mew List<Duck>的時 12/03 22:27
5F:→ 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
6F:推 kookll2: 這樣好像是無限迴圈的問題 12/03 23:06
7F:推 kookll2: 你new一個類別然後自己的list又new了自己 12/03 23:14
8F:→ kookll2: 就變成無限迴圈了 12/03 23:14
啊!非常感謝
我真的是犯了一個很基礎的錯誤
※ 編輯: berice152233 (106.105.207.206 臺灣), 12/03/2019 23:25:52
9F:推 wix3000: 你範例的第一行 new 後面就多一對括號啊 XD 12/04 01:07