이상한 동작이 발생합니다. 클래스의 배열을 포함하는 간단한 C# 스크립트를 만들면 스크립트 클래스와 배열 클래스가 모두 Serializable로 표시되고 내 장면 뷰가 시작됩니다. (스크립트 구성 요소를 포함하는 게임 객체가 선택 될 때) 마우스를 움직일 때 지체됩니다. 또한 배열 클래스에 SerializeField로 표시된 멤버가 더 많은 경우 지연이 늘어납니다.배열을 사용할 때 Sceneview Lag가 발생합니다.
[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"와 같은 메시지를 얻게되어 매우 기쁩니다. 따라서 타일을 저장하고 간단한 형식으로 다시로드 할 수 있으며, 화합으로 타일 gameobjecs를 저장하고, 그 메쉬 물건 -하지만 그 무거운 과부하가 .. 두 목록과 "깨어있는"메시지를 듣고, 이런 식으로 뭔가를 만들려고 -하지만 내가 편집기에서 메시지를 얻으면, 나는 기존의 gameobjects을 삭제할 수 없습니다 - 그것 에디터가 데이터를 다시로드 할 때 삭제하고 다시 만들 수 있다면 좋을 것입니다.
스크립트의 해당 부분을 게시 할 수 있습니까? 어쩌면 거기에 뭔가가있을 수 있습니다. 또한 (직렬화 된) 객체가'Update' 함수에서 건드리지 않았는지 확실합니까? – Joetjah
완료. 그리고, 그래, 나는 내 물건을 더럽다고 표시하지 않는다. =/ – lunatix