Извините, ничего не найдено.

Не расстраивайся! Лучше выпей чайку!
Регистрация
Справка
Календарь

Вернуться   forum.boolean.name > Программирование игр для компьютеров > Unity > Общие вопросы

Общие вопросы вопросы не попадающие ни в один из доступных разделов

Ответ
 
Опции темы
Старый 10.02.2014, 17:38   #1
ANIK123
Знающий
 
Аватар для ANIK123
 
Регистрация: 29.11.2010
Сообщений: 244
Написано 31 полезных сообщений
(для 49 пользователей)
Убрать размер массива в инспекторе

Как убрать это?

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

Вот что есть:
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;
	}
}
Правда я пока не понимаю как потом этот массив обновлять -__-

С инспектором я на ВЫ, поэтому буду благодарен за любые примечания, спасибо
__________________
Intel Core i3-4005U (1.7 ГГц), 4 ГБ ОЗУ, nVidia GeForce 940M 4 ГБ, Win8.1
(Offline)
 
Ответить с цитированием
Старый 10.02.2014, 17:57   #2
pax
Unity/C# кодер
 
Аватар для pax
 
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений
(для 5,323 пользователей)
Ответ: Убрать размер массива в инспекторе

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

По теме вопроса: зачем вообще массив не изменяемый по размеру?
__________________
Blitz3d to Unity Wiki
(Offline)
 
Ответить с цитированием
Старый 10.02.2014, 18:10   #3
ANIK123
Знающий
 
Аватар для ANIK123
 
Регистрация: 29.11.2010
Сообщений: 244
Написано 31 полезных сообщений
(для 49 пользователей)
Ответ: Убрать размер массива в инспекторе

Здравствуйте)
Нужно просто вывести enum-перечисление, подскажите другой способ)
__________________
Intel Core i3-4005U (1.7 ГГц), 4 ГБ ОЗУ, nVidia GeForce 940M 4 ГБ, Win8.1
(Offline)
 
Ответить с цитированием
Старый 10.02.2014, 18:16   #4
ANIK123
Знающий
 
Аватар для ANIK123
 
Регистрация: 29.11.2010
Сообщений: 244
Написано 31 полезных сообщений
(для 49 пользователей)
Ответ: Убрать размер массива в инспекторе

Извините за беспокойство, надуманная проблема решилась корректировкой логики приложения, тему в утиль
__________________
Intel Core i3-4005U (1.7 ГГц), 4 ГБ ОЗУ, nVidia GeForce 940M 4 ГБ, Win8.1
(Offline)
 
Ответить с цитированием
Старый 10.02.2014, 18:26   #5
ANIK123
Знающий
 
Аватар для ANIK123
 
Регистрация: 29.11.2010
Сообщений: 244
Написано 31 полезных сообщений
(для 49 пользователей)
Ответ: Убрать размер массива в инспекторе

ааа возник вопрос: можно отследить евент при изменении значения в инспекторе?
__________________
Intel Core i3-4005U (1.7 ГГц), 4 ГБ ОЗУ, nVidia GeForce 940M 4 ГБ, Win8.1
(Offline)
 
Ответить с цитированием
Старый 10.02.2014, 19:00   #6
ANIK123
Знающий
 
Аватар для ANIK123
 
Регистрация: 29.11.2010
Сообщений: 244
Написано 31 полезных сообщений
(для 49 пользователей)
Ответ: Убрать размер массива в инспекторе

ну все, теперь точно тему в утиль, еще раз Извините
__________________
Intel Core i3-4005U (1.7 ГГц), 4 ГБ ОЗУ, nVidia GeForce 940M 4 ГБ, Win8.1
(Offline)
 
Ответить с цитированием
Старый 12.02.2014, 16:11   #7
Azamat
AnyKey`щик
 
Аватар для Azamat
 
Регистрация: 13.11.2013
Сообщений: 11
Написано одно полезное сообщение
Ответ: Убрать размер массива в инспекторе

[HideInInspector]
public LevelCellType[] levelCellTypes = CreateTypesArray();

или изменить модификатор доступа на internal
__________________
Предел в твоей голове.
(Offline)
 
Ответить с цитированием
Старый 12.02.2014, 20:05   #8
pax
Unity/C# кодер
 
Аватар для pax
 
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений
(для 5,323 пользователей)
Ответ: Убрать размер массива в инспекторе

Это уберет весь массив вероятно...
__________________
Blitz3d to Unity Wiki
(Offline)
 
Ответить с цитированием
Старый 13.02.2014, 13:25   #9
Azamat
AnyKey`щик
 
Аватар для Azamat
 
Регистрация: 13.11.2013
Сообщений: 11
Написано одно полезное сообщение
Ответ: Убрать размер массива в инспекторе

Сообщение от pax Посмотреть сообщение
Это уберет весь массив вероятно...
просто скрыть доступ к значению через Inspector
__________________
Предел в твоей голове.
(Offline)
 
Ответить с цитированием
Ответ


Опции темы

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


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


vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot
Style crйe par Allan - vBulletin-Ressources.com