首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在C#中初始化的列表中已有元素

在C#中初始化的列表中已有元素
EN

Stack Overflow用户
提问于 2017-08-11 17:57:31
回答 2查看 70关注 0票数 0

在Unity中,在使用C#的同时,我初始化了一个列表:

代码语言:javascript
运行
复制
public List<int> sequence = new List<int>();

然而,我注意到后来使用列表时,它包含的元素比我预期的要多。我运行这段代码来调试它:

代码语言:javascript
运行
复制
void Start () {
        Debug.Log(sequence.Count);
        sequence.Clear ();
        Debug.Log(sequence.Count);
        sequence.Add (0);
        sequence.Add (1);
        sequence.Add (2);
        sequence.Add (3);
        Debug.Log(sequence.Count);
}

这给出了以下输出:

代码语言:javascript
运行
复制
4
0
4

我原本期望输出为0 0 4,因为创建的列表中应该包含0个元素。

由于某种原因,我还没能解决这个问题,这个列表是用4个元素创建的。

首先,任何人都能复制这个吗?其次,有没有人能搞清楚为什么会发生这种情况(用sequence.Clear()很容易就能解决)?

提前感谢!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-08-11 18:06:07

事实证明,无论出于什么原因,列表在检查器中的元素数量都设置为4。感谢大家的帮助。

票数 0
EN

Stack Overflow用户

发布于 2017-08-11 18:04:49

在Unity3D中,可序列化的公共字段等同于将[SerializeField]属性放在字段声明之前。如果这个字段是另一个可序列化类(通常是MonoBehaviour)的一部分,Unity将在对象中存储这些值。这些值由编辑器保存(当游戏不运行时),存储在磁盘上,并在每次打开项目时再次加载。在场景中实例化对象时,该对象还将具有公共/序列化变量的副本。

因此,要检查是否为该对象指定了值,请在编辑器中查找它所属的MonoBehaviour。不要寻找脚本。查找GameObject。向下滚动到检查器中显示sequence的位置。是否指定了值?如果是这样,在包含脚本的对象(组件)实例化之后,这些值将始终存在。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45632293

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档