作者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/cn.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