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=15809)

seaman 20.02.2013 23:33

Ответ: Вопросы от новичка
 
Не инициализирован gridEl
Код:

void Start () {
  gridEl = new gridEl[gridMaxX, gridMaxZ]


WISHMASTER35 20.02.2013 23:39

Ответ: Вопросы от новичка
 
Цитата:

Сообщение от seaman (Сообщение 253339)
Directory.GetFiles вызывает исключение при попытке обратиться к скрытым фалам и папкам. Нужно просто обработать это исключение.

Мне как бы незачем обращаться к скрытым папкам. Мне надо чтобы Directory.GetDirectories / GetFiles не возвращали скрытых папок и файлов.
Но видно придется потом проверять и удалять скрытые элементы из массива.

seaman 20.02.2013 23:51

Ответ: Вопросы от новичка
 
Берешь все. Перебираешь все. При обращении к скрытому возникает исключение. Перехватываешь и просто пропускаешь - переходишь к следующему.
Может есть проще, но я не нашел.

WISHMASTER35 20.02.2013 23:54

Ответ: Вопросы от новичка
 
seaman, должен быть способ проверить атрибуты файла. Разве Mono настолько кастрирован.

seaman 21.02.2013 00:11

Ответ: Вопросы от новичка
 
File.GetAttributes

WISHMASTER35 21.02.2013 00:31

Ответ: Вопросы от новичка
 
Да.
Код:

                for(int i=0; i<items.Count; ) {
                        FileAttributes attr = items[i].Attributes;
                        if((attr & FileAttributes.Hidden) == FileAttributes.Hidden) {
                                items.RemoveAt( i );
                        } else {
                                i++;
                        }
                }

Только почему-то жесткие диски удаляются, а остаются только съемные носители, которые не нужны.

WISHMASTER35 21.02.2013 20:08

Ответ: Вопросы от новичка
 
Как узнать DirectoryInfo указывает на папку или файл? Замучился уже, но не вижу способа.

seaman 21.02.2013 20:49

Ответ: Вопросы от новичка
 
DirectoryInfo.EnumerateDirectories() (или GetDirectories())- возвращает коллекцию всех подкаталогов данного каталога.
DirectoryInfo.EnumerateFiles() (или GetFiles())- возвращает коллекцию всех файлов данного каталога.

pax 21.02.2013 20:52

Ответ: Вопросы от новичка
 
Берешь атрибуты http://msdn.microsoft.com/ru-ru/libr...ttributes.aspx

сравниваешь вот таким образом:
http://msdn.microsoft.com/ru-ru/libr...ttributes.aspx

со значением FileAttributes.Directory

WISHMASTER35 21.02.2013 21:42

Ответ: Вопросы от новичка
 
seaman, а если в каталоге нет не папок, не файлов?
pax, пробовал FileAttributes.Directory, но допустил ошибку в другом месте и решил, что FileAttributes.Directory не работает)
Кстати, съемные диски не FileAttributes.Directory.

WISHMASTER35 06.03.2013 21:40

Ответ: Вопросы от новичка
 
Вложений: 1
Можно сделать рендер не на весь экран, а в некотром окошке? Проблема в том, что размеры эти окна не задаются жестко, а вычисляются через GUILayout. Вообщем на скрине видно.
А сделать свой редактор для игры сложно) Выглядит совсем фигово(

seaman 06.03.2013 22:44

Ответ: Вопросы от новичка
 
Цитата:

Можно сделать рендер не на весь экран, а в некотром окошке?
Не очень понятно типа свое окно программы? Или рендер второй камеры в часть окна? Второе:
Camera.rect

WISHMASTER35 06.03.2013 22:54

Ответ: Вопросы от новичка
 
Пишу так
Код:

Rect viewPort = GUILayoutUtility.GetRect(0, 0, GUILayout.ExpandWidth(true), GUILayout.ExpandHeight(true));
if(Event.current.type == EventType.Repaint) {
viewPort.x /= Screen.width;
viewPort.y /= Screen.height;
viewPort.width /= Screen.width;
viewPort.height /= Screen.height;
Camera.mainCamera.rect = viewPort;
}

Но неправильно работает. Разные системы координат. Нужно как-то ось Y изменить.

pax 06.03.2013 22:58

Ответ: Вопросы от новичка
 
viewPort.center = GUIUtility.GUIToScreenPoint(viewPort.center);
а вообще есть camera.pexelRect

WISHMASTER35 06.03.2013 23:27

Ответ: Вопросы от новичка
 
Вложений: 1
GUIUtility.GUIToScreenPoint переводит координаты из оконных в глобальные т.е. просто pos -= window.pos. Вообщем не то что нужно.
Вот так работает.
Код:

Vector2 center = viewPort.center;
center.y = Screen.height - center.y;
viewPort.center = center;
Camera.mainCamera.pixelRect = viewPort;

Все бы хорошо, но отступы между боксами мешают.
И еще пару вопросов появилось.
1) Как сделать, чтобы текст не переносился на новую строку? На скрине видно, что gui пытается впихнуть весь текст в rect и в итоге совсем ничего не видно.
2) И как сделать поле ввода для числа?
Так пишу, но фигово получается.
Код:

string text = TextField(label, value.ToString());
int.TryParse(text, out value);
return value;

Удобно, когда ввести можно любую строку из чисел, например 0001.
А число 1 получится только при потери фокуса.


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

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