forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   Общие вопросы (http://forum.boolean.name/forumdisplay.php?f=166)
-   -   Убрать размер массива в инспекторе (http://forum.boolean.name/showthread.php?t=18926)

ANIK123 10.02.2014 17:38

Убрать размер массива в инспекторе
 
Как убрать это?

Нужно исключить возможность изменения размера массива в инспекторе

Вот что есть:
Код:

public enum CType : byte {Default, Lava, Steklo};
public class Level : MonoBehaviour {
        [System.Serializable]
        public class LevelCellType {

                public CType type;
                public string typename;
                public float mass = 0.0f;
        }
        public LevelCellType[] levelCellTypes = CreateTypesArray();

        //создаю массив размером равным количеству перечислений в CType,
        //именования которого перевожу в строковой вид
        //и присваиваю соответствующему элементу новоиспеченного массива.
        //Вот поэтому больше или меньше он быть не должен
        static private LevelCellType[] CreateTypesArray(){
                string[] names = System.Enum.GetNames(typeof(CType));
                LevelCellType[] arr = new LevelCellType[names.Length];
                for (int i = 0; i < arr.Length; i++){
                        arr[i] = new LevelCellType();
                        arr[i].type = (CType)i;
                        arr[i].typename = names[i];
                }
                return arr;
        }
}
[CustomPropertyDrawer(typeof(Level.LevelCellType))]
public class LevelCellTypeDrawer : PropertyDrawer {
        const float min = 0;
        const float max = 1;

        public override void OnGUI (Rect position, SerializedProperty property, GUIContent label) {
                int indent = EditorGUI.indentLevel;
                EditorGUI.indentLevel = 0;

                label.text = property.FindPropertyRelative ("typename").stringValue;
                EditorGUI.Slider (
                    new Rect (position.x, position.y, position.width, position.height),
                    property.FindPropertyRelative ("mass"),
            min, max, label);
                EditorGUI.indentLevel = indent;
        }
}

Правда я пока не понимаю как потом этот массив обновлять -__-

С инспектором я на ВЫ, поэтому буду благодарен за любые примечания, спасибо :)

pax 10.02.2014 17:57

Ответ: Убрать размер массива в инспекторе
 
Переместил тему в общие вопросы, т.к. это расширение редактора и довольно специфичное.

По теме вопроса: зачем вообще массив не изменяемый по размеру?

ANIK123 10.02.2014 18:10

Ответ: Убрать размер массива в инспекторе
 
Здравствуйте)
Нужно просто вывести enum-перечисление, подскажите другой способ)

ANIK123 10.02.2014 18:16

Ответ: Убрать размер массива в инспекторе
 
Извините за беспокойство, надуманная проблема решилась корректировкой логики приложения, тему в утиль

ANIK123 10.02.2014 18:26

Ответ: Убрать размер массива в инспекторе
 
ааа возник вопрос: можно отследить евент при изменении значения в инспекторе?

ANIK123 10.02.2014 19:00

Ответ: Убрать размер массива в инспекторе
 
ну все, теперь точно тему в утиль, еще раз Извините

Azamat 12.02.2014 16:11

Ответ: Убрать размер массива в инспекторе
 
[HideInInspector]
public LevelCellType[] levelCellTypes = CreateTypesArray();

или изменить модификатор доступа на internal

pax 12.02.2014 20:05

Ответ: Убрать размер массива в инспекторе
 
Это уберет весь массив вероятно...

Azamat 13.02.2014 13:25

Ответ: Убрать размер массива в инспекторе
 
Цитата:

Сообщение от pax (Сообщение 274221)
Это уберет весь массив вероятно...

просто скрыть доступ к значению через Inspector


Часовой пояс GMT +4, время: 10:14.

vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot