SerializationException: тип UnityEngine.GameObject не помечен как сериализуемыйC#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 SerializationException: тип UnityEngine.GameObject не помечен как сериализуемый

Сообщение Anonymous »

Я хочу кое-что спросить. Я создаю игру и пытаюсь сохранять и загружать данные игры, как в «Урожайной луне», но у меня возникла эта ошибка. Я искал такую ​​ошибку в Google, но понятия не имею, как ее решить. А это мой код.

Код: Выделить всё

using UnityEngine;
using System.Collections;
using System;
using System.Collections.Generic;
using System.Runtime.Serialization.Formatters.Binary;
using System.IO;

public class gameController : MonoBehaviour {
public static gameController control;
public basicskill bs;

// Use this for initialization
void Awake () {
if(control == null)
{
DontDestroyOnLoad(gameObject);
control = this;
}
else if(control != this)
{
Destroy(gameObject);
}

}

void OnGUI(){
GUI.Label (new Rect (10, 10, 100, 30), "Health: " + bs.charPrince.health);
GUI.Label (new Rect (10, 40, 140, 30), "Experience: " + bs.charPrince.exp);
}

public void Save(){

BinaryFormatter bf = new BinaryFormatter ();
FileStream file = File.Create (Application.persistentDataPath + "/playerInfo.dat");

Prince data = new Prince ();
data.name = bs.charPrince.name;
data.birthday = bs.charPrince.birthday;
data.hadapAtas = bs.charPrince.hadapAtas;
data.hadapKanan = bs.charPrince.hadapKanan;
data.locationY = bs.charPrince.locationY;
data.locationX = bs.charPrince.locationX;
data.exp = bs.charPrince.exp;
data.health = bs.charPrince.health;
bf.Serialize (file, data);
file.Close ();
}

public void Load(){
if(File.Exists(Application.persistentDataPath + "/playerInfo.dat"))
{
BinaryFormatter bf = new BinaryFormatter();
FileStream file = File.Open(Application.persistentDataPath + "/playerInfo.dat", FileMode.Open);
Prince data = (Prince)bf.Deserialize(file);
file.Close();

bs.charPrince.name = data.name;
bs.charPrince.birthday = data.birthday ;
bs.charPrince.hadapAtas = data.hadapAtas ;
bs.charPrince.hadapKanan = data.hadapKanan;
bs.charPrince.locationY = data.locationY;
bs.charPrince.locationX = data.locationX;
bs.charPrince.exp = data.exp;
bs.charPrince.health = data.health;
}
}

// Update is called once per frame
void Update () {

}
}
Из приведенного выше кода я получил ошибку


SerializationException: Type UnityEngine.GameObject не помечен как
Сериализуемый.
System.Runtime.Serialization.Formatters.Binary.BinaryCommon.CheckSerializable
(тип System.Type, селектор ISurrogateSelector, контекст StreamingContext
) (at /Users/builduser/buildslave/mono-runtime-and-classlibs/build/mcs/class/corlib/System.Runtime.Serialization.Formatters.Binary/BinaryCommon.cs:119)
System.Runtime. Serialization.Formatters.Binary.ObjectWriter.WriteValue
(писатель System.IO.BinaryWriter, System.Type valueType, System.Object
val) (at
/Users/builduser/buildslave/mono- runtime-and-classlibs/build/mcs/class/corlib/System.Runtime.Serialization.Formatters.Binary/ObjectWriter.cs:732)
Prince__TypeMetadata.WriteObjectData
(System.Runtime.Serialization.Formatters. Binary.ObjectWriter,
System.IO.BinaryWriter, System.Object)
System.Runtime.Serialization.Formatters.Binary.ObjectWriter.WriteObject
(писатель System.IO.BinaryWriter, идентификатор Int64, System.Object obj) (в
/Users/builduser/buildslave/mono-runtime-and-classlibs/build/mcs/class/corlib/System.Runtime.Serialization.Formatters.Binary/ObjectWriter.cs:360)
System.Runtime.Serialization.Formatters.Binary.ObjectWriter.WriteObjectInstance
(писатель System.IO.BinaryWriter, объект System.Object, логическое значение
isValueObject) (в
/Users/ builduser/buildslave/mono-runtime-and-classlibs/build/mcs/class/corlib/System.Runtime.Serialization.Formatters.Binary/ObjectWriter.cs:293)
System.Runtime.Serialization.Formatters.Binary. ObjectWriter.WriteQueuedObjects
(писатель System.IO.BinaryWriter) (в
/Users/builduser/buildslave/mono-runtime-and-classlibs/build/mcs/class/corlib/System.Runtime.Serialization. Formatters.Binary/ObjectWriter.cs:271)
System.Runtime.Serialization.Formatters.Binary.ObjectWriter.WriteObjectGraph
(писатель System.IO.BinaryWriter, System.Object obj,
System. Заголовки Runtime.Remoting.Messaging.Header[]) (в
/Users/builduser/buildslave/mono-runtime-and-classlibs/build/mcs/class/corlib/System.Runtime.Serialization.Formatters.Binary/ ObjectWriter.cs:256)
System.Runtime.Serialization.Formatters.Binary.BinaryFormatter.Serialize
(System.IO.Stream SerializationStream, System.Object Graph,
System.Runtime.Remoting. Заголовки Messaging.Header[]) (в
/Users/builduser/buildslave/mono-runtime-and-classlibs/build/mcs/class/corlib/System.Runtime.Serialization.Formatters.Binary/BinaryFormatter.cs: 232)
System.Runtime.Serialization.Formatters.Binary.BinaryFormatter.Serialize
(System.IO.Stream сериализацияStream, граф System.Object) (в
/Users/builduser/buildslave/mono -runtime-and-classlibs/build/mcs/class/corlib/System.Runtime.Serialization.Formatters.Binary/BinaryFormatter.cs:211)
gameController.Save() (в Assets/Scripts/gameController.cs: 45)
justScript.OnGUI() (в Assets/Scripts/adjustScript.cs:32)


и это мой другие коды

Код: Выделить всё

using UnityEngine;
using System.Collections;
using System;

public class adjustScript : MonoBehaviour {
void OnGUI(){
if(GUI.Button(new Rect(10,100,100,30),"Health Up"))
{
gameController.control.bs.charPrince.health += 10;
}
if(GUI.Button(new Rect(10,140,100,30),"Health Down"))
{
if(gameController.control.bs.charPrince.health >0)
{
gameController.control.bs.charPrince.health -= 10;
}
}
if(GUI.Button(new Rect(10,180,100,30),"Experience Up"))
{
gameController.control.bs.charPrince.exp += 10;

}
if(GUI.Button(new Rect(10,220,100,30),"Experience Down"))
{
if(gameController.control.bs.charPrince.exp >0)
{
gameController.control.bs.charPrince.exp -= 10;
}
}
if(GUI.Button(new Rect(10,260,100,30),"Save"))
{
gameController.control.Save();

}
if(GUI.Button(new Rect(10,300,100,30),"Load"))
{
gameController.control.Load();

}
}
}

using UnityEngine;
using System.Collections;
using System.Collections.Generic;
using System;

[Serializable]
public class Prince : Character{
public float health = 100f;
public float exp = 0f;
public float kecMaks = 0f;
public float moveV = 0f;
public float moveH = 0f;
public bool hadapKanan = false;
public bool hadapAtas = true;
public GameObject objPrince;

public Prince()
{
this.name = "";
this.birthday = "";
this.objPrince = null;
}
public Prince(GameObject objChar,string nama, string birthday){
this.name = nama;
this.birthday = birthday;
this.objPrince = objChar;
}
}

using UnityEngine;
using System.Collections;
using System;

[Serializable]
public class Character  {
public string name;
public string birthday;
public float locationX;
public float locationY;

public Character(){
this.name = "";
this.birthday = "";
this.locationX = 0f;
this.locationY = 0f;
}
}
Пожалуйста, помогите мне решить эту проблему. Я узнал об этом из живого руководства Unity по сохранению и загрузке данных, но у того, кто создал такой код, не было этой ошибки.

Подробнее здесь: https://stackoverflow.com/questions/262 ... erializabl
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Тип сборки не помечен как сериализуемый Unity
    Гость » » в форуме C#
    0 Ответы
    28 Просмотры
    Последнее сообщение Гость
  • Как преобразовать System.Collections.Generic.IEnumerable» в «UnityEngine.AnimationClip»
    Anonymous » » в форуме C#
    0 Ответы
    31 Просмотры
    Последнее сообщение Anonymous
  • UnityEngine.GameObject
    Anonymous » » в форуме C#
    0 Ответы
    14 Просмотры
    Последнее сообщение Anonymous
  • MissingReferenceException: объект типа UnityEngine.GameObject был уничтожен, но вы все еще пытаетесь получить к нему дос
    Anonymous » » в форуме C#
    0 Ответы
    21 Просмотры
    Последнее сообщение Anonymous
  • MissingReferenceException: объект типа UnityEngine.GameObject был уничтожен, но вы все еще пытаетесь получить к нему дос
    Anonymous » » в форуме C#
    0 Ответы
    23 Просмотры
    Последнее сообщение Anonymous

Вернуться в «C#»