我在这里遇到了一个奇怪的行为 - 当我创建一个包含类数组的简单 C# 脚本时,其中脚本类和数组类都标记为可序列化,我的场景视图开始滞后于移动鼠标(当包含脚本组件的游戏对象被选中)。此外,当数组类有更多成员时,延迟会增加,这些成员被标记为 SerializeField。
如果我在我的数组上添加属性 [field: NonSerialized],那么滞后就消失了。此外,[HideInInspector] 并没有改变任何事情 - 在我看来,某些事情正在导致统一序列化每一帧的脚本内容 - 这会有点奇怪,因为什么会导致这种行为?
有人知道解决方案吗?
[编辑:代码片段]
using System;
using UnityEngine;
[Serializable]
public class TestObject{
public int IndexX;
public int IndexY;
public int LengthX;
public int LengthY;
public float AnimationLength;
public bool Animate;
public float AnimationSpeed;
[SerializeField]
private GameObject mGameObject;
}
[Serializable]
public class TestScript{
[HideInInspector]
public TestObject[] Objects = new TestObject[256*64];
void Start(){
}
void Update(){
}
}
这个非常简短和基本的脚本会导致滞后问题......但是 256x64 的数组应该不难序列化。我正在构建一个 Jump'n'Run 游戏 - 我很高兴收到“OnSerialize”和“OnDeserialize”之类的消息,所以我可以以更简单的格式保存和重新加载我的图块,统一保存图块游戏对象,它网格化一个东西 - 但那是一个重载......试图制作这样的东西,有两个列表并监听“唤醒”消息 - 但如果我在编辑器中收到消息,我无法删除现有的游戏对象 - 它会太好了,如果我可以在编辑器重新加载数据时删除并重新创建它们。