Вопрос Serializable

Форум для самых маленьких, а так же тех, кому недосуг читать справку самостоятельно.

Вопрос Serializable

Сообщение FreeUnity 07 дек 2011, 15:51

(c#) Вопрос о Инспекторе объектов Unity3d 3.4

Синтаксис:
Используется csharp
using UnityEngine;
using System.Collections;
using System;


public class Serr : MonoBehaviour{
       
        public bool canClose = true;
              public Color c = Color.red;
       
        [Serializable]
        public class a1
        {
        public int p = 5;
        public Color c = Color.white;
       
        }
       
        [Serializable]
        public class b1
        {      
                public int p = 5;
        public Color c = Color.white;
        }


        }
 


Не могу понять, почему в инспекторе объектов не отображается параметры класса Test, так же как и в CharacterMotor.js?

Не хотелось бы использовать EditorGUILayout.Foldout


Буду признателен за помощь. :-bd
Спасибо.


P.S.: Я начинающий
Последний раз редактировалось FreeUnity 07 дек 2011, 17:57, всего редактировалось 1 раз.
Аватара пользователя
FreeUnity
UNец
 
Сообщения: 16
Зарегистрирован: 07 дек 2011, 15:39

Re: Вопрос Serializable

Сообщение Order 07 дек 2011, 17:11

Скорее всего класс приватный, нужно сделать паблик.
Добавить rusorder в Skype , _juc4you@mail.ru ;
Платные консультации, программирование ваших проектов Unity3d,C#,IOS,Android.
Скрытый текст:
_ttp://www.youtube.com/watch?v=1m2qTnatSjM&list=UUjcKNvONEUHCILG7QrX1NFg
Order
Старожил
 
Сообщения: 805
Зарегистрирован: 21 фев 2010, 10:34

Re: Вопрос Serializable

Сообщение Neodrop 07 дек 2011, 17:17

Собственно, исходя из этого кода, именно потому, что класс приватный. Равно как я не вижу и публичной переменной его типа.
Добавить neodrop в Skype
Изображение
"Спасибо!" нашему порталу, вы сможете сказать ЗДЕСЬ.
Если проблема не решается честно, нужно её обмануть! || Per stupiditas at Astra!
Страх порождает слабость. Бесстрашных поражают пули.
Протратившись на блядях байтах, на битах не экономят.
Аватара пользователя
Neodrop
Админ
 
Сообщения: 8480
Зарегистрирован: 08 окт 2008, 15:42
Откуда: Питер
Skype: neodrop
  • Сайт

Re: Вопрос Serializable

Сообщение FreeUnity 07 дек 2011, 17:58

Обновил код.
А если сеиализовать класс в классе?
Аватара пользователя
FreeUnity
UNец
 
Сообщения: 16
Зарегистрирован: 07 дек 2011, 15:39

Re: Вопрос Serializable

Сообщение waruiyume 07 дек 2011, 18:37

В инспекторе вроде-бы только экземпляры видны.
Синтаксис:
Используется csharp
using UnityEngine;
using System.Collections;
using System;


public class Serr : MonoBehaviour
{

    public bool canClose = true;
    public Color c = Color.red;

    [Serializable]
    public class A1
    {
        public int p = 5;
        public Color c = Color.white;

    }
    [Serializable]
    public class B1
    {
        public int p = 5;
        public Color c = Color.white;
    }

    [SerializeField]
    public A1 a1 = new A1();
    [SerializeField]
    public B1 b1 = new B1();

}

 
Аватара пользователя
waruiyume
Адепт
 
Сообщения: 6143
Зарегистрирован: 30 окт 2010, 05:03
Откуда: Ростов на Дону

Re: Вопрос Serializable

Сообщение AndreyMust19 07 дек 2011, 21:46

Почти правильно. [System.Serializable] нужно использовать только при описании класса, чтобы указать движку что его можно сериализовать.
Потом, чтобы объект появился в инспекторе, просто объявите его в публичной области видимости. Тогда все сериализуемые поля этого объекта будут видны в инспекторе как его часть.
Указывайте [SerializeField] перед приватным полем, если несмотря на закрытую область видимости хотите его сериализовать тоже.
Нужна помощь? Сами, сами, сами, сами, сами... делаем все сами
AndreyMust19
Адепт
 
Сообщения: 1119
Зарегистрирован: 07 июн 2011, 13:19

Re: Вопрос Serializable

Сообщение waruiyume 07 дек 2011, 22:27

Почти правильно.

Ну так покажите "правильный" пример (popcorn) .
Аватара пользователя
waruiyume
Адепт
 
Сообщения: 6143
Зарегистрирован: 30 окт 2010, 05:03
Откуда: Ростов на Дону

Re: Вопрос Serializable

Сообщение AndreyMust19 08 дек 2011, 00:35

Да подавитесь пожалуйста:

Example.cs
Синтаксис:
Используется csharp
using UnityEngine;
using System.Collections;

[System.Serializable]
public class Example {
        public float f;
        public int i;
        public GameObject go;
}


ExampleUse.cs
Синтаксис:
Используется csharp
using UnityEngine;
using System.Collections;

public class ExampleUse : MonoBehaviour {

public Example e1;
}


Поля f, i, go будут видны в скрипт-компоненте ExampleUse как элементы списка.
Нужна помощь? Сами, сами, сами, сами, сами... делаем все сами
AndreyMust19
Адепт
 
Сообщения: 1119
Зарегистрирован: 07 июн 2011, 13:19

Re: Вопрос Serializable

Сообщение FreeUnity 08 дек 2011, 09:23

Спасибо огромное разобрался. Работает. При много благодарен. :ymdaydream:
Аватара пользователя
FreeUnity
UNец
 
Сообщения: 16
Зарегистрирован: 07 дек 2011, 15:39


Вернуться в Почемучка

Кто сейчас на конференции

Сейчас этот форум просматривают: Google [Bot], Yandex [Bot] и гости: 21