반복 서열화 오류: Recursive Serialization is not supported.You can‘t dereference a PPtr while loading.
오류 메시지: Recursive Serialization is not supported.You can’t dereference a PPtr while loading. (Constructors of C# classes may not load objects either. See stacktrace.) 전반적으로 Unity는 귀속 서열화를 지원하지 않습니다.
출현 상황: (하나) 서열화된 클래스가 있습니다:Class1;Class1에서 Class1을 참조했습니다.예를 들면 다음과 같습니다.
[System.Serializable]
public class Class1
{
// List
public List<Class1> c1List;
//
//public Class1 c1;
}
(2) 서열화 가능한 클래스가 하나 있다:Class1;또 하나의 서열화 가능한 클래스가 있습니다:Class2;Class1에서는 Class2를 인용했고 Class2에서는 Class1을 인용했다.서열화 오류도 발생할 수 있습니다.예를 들면 다음과 같습니다.
[System.Serializable]
public class Class1
{
// List Class2
public List<Class2> c2List;
//
//public Class2 c2;
}
[System.Serializable]
public class Class2
{
// List Class1
public List<Class1> c1List;
//
//public Class1 c1;
}
위의 두 가지 상황과 같이 귀속 서열화를 초래했고 가장 큰 서열화 깊이는 7이다. 그러나 Unity의 서열화는 이런 잠재적인 무한 서열화 데이터를 처리할 수 없다. Unity 2017 이전에 귀속 서열화도 하나의 Warning에 불과했다. Unity 2017 이후에 바로 Error이다. 그리고 Unity 컴파일러 환경에서 이 오류는 운행 효과에 영향을 주지 않지만 포장할 때 나타나고 포장에 실패한다.해결할 수밖에 없어요.
해결 방안: (1) 서열화의 가장 큰 역할은 컴파일러 속성 패널에서 그 수치를 관찰하거나 바꾸는 것이다. 이 부분의 코드를 다시 쓸 수 있고 귀속 서열화된 인용을 삭제할 수 있다.(2) 프로젝트를 Unity 2017 이전 버전으로 스크롤합니다. 이때 이것은 경고일 뿐 포장에 영향을 주지 않습니다.
PS: 만약에 이 문제를 해결할 때 프로젝트에 대량의 시퀀스가 귀속되는 상황이 발생하면 코드를 찾는 데 많은 시간이 걸릴 것이다.Unity 컴파일러의 콘솔 패널에서는 Warning에 따라 문제가 발생한 곳을 신속하게 포착할 수 있다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
[Unity WebGL] 캐시에서 콘텐츠를 로드하지 않게 만드는 방법방법은 파일 URL(예: version=007, script.js?v=1150)에 GET 매개변수를 추가하여 스타일 또는 자바스크립트 콘텐츠를 강제로 새로고침하려는 경우와 같습니다. 그런 다음 파일이 다음과 같이 변...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.