![]() |
Управление переименованными чайлдами
Допустим есть анимированный юнит, и кликнув на него я хочу чтобы высвечивалось имя юнита. Я сделал перебор чайлдов меша и каждому присвоил имя "Unit01".
Но в то же время хочется сохранить возможность управлять отдельными чайлдами, поскольку быстрее написать в блице FindChild-TurnEntity, чем переэкспортировать всю модель...а при загрузке модели все имена уже заменились на "Unit01"...и как совместить эти две функции, переименования и в то же время управления ? Можно конечно выбирать юнит по сфере, а чайлдами управлять по изначальным именам, но меня интересует как сделать вариант с пополигонным пиком. |
Ответ: Управление переименованными чайлдами
задать составное имя:
Unit01:turret Unit01:tits Unit01:wheel0 например. хотя лучше всего хранить в имени хендл на елемент типа юнита. и уже в типе хранить все что нужно. |
Ответ: Управление переименованными чайлдами
Цитата:
|
Ответ: Управление переименованными чайлдами
Ну вот опять)
|
Ответ: Управление переименованными чайлдами
Ну да, я вообще в типах не шарю, а ты тут кидаешь пост о продвинутой работе с типами; очень, блин, полезно.
|
Ответ: Управление переименованными чайлдами
Не о продвинутой работе, а просто про хендлы, о которых и говорил Холи.
Кстати, в том же FAQ есть вот это А еще можно заглянуть в хелп и пример Castle. Я на нем типы выучил. |
Ответ: Управление переименованными чайлдами
Ну если не хендл, раз с типами сложно, то номер переменных в массивах.
Т.е. создай массивы Dim Name$(n) Dim UnitEnt(n) Dim Life(n) а в имена пиши n. Хотя типы надо знать конечно. |
Ответ: Управление переименованными чайлдами
Кстати, обнаружил что рекурсии, для обращения к LoadAnimMesh, абсолютно не нужны. Нужно только весь анимированный меш поместить под общего родителя в редакторе, и всё прекрасно работает точно так же как и с LoadMesh, и текстуры накладываются одной командой, и альфа меняется для всех сразу, и всё остальное.
|
Ответ: Управление переименованными чайлдами
Цитата:
|
Ответ: Управление переименованными чайлдами
Переписываю программку под типы...вроде удобнее, но с другой стороны переменных получается в два-три раза больше чем без типов. :-D
А, вот, как проверить принадлежит ли какая-нибудь Entity определенному типу ? Допустим клик на объект, затем распознавание типа объекта, например "свой-чужой-нейтрален", и в зависимости от этого производить действия. Допустим у меня стоит в типе "Field loyalty=enemy", но как узнать существует ли в выбранном типе такое поле ? Опять же надо как-то узнать принадлежит ли объект к типу вообще, или просто одинокий Entity. |
Ответ: Управление переименованными чайлдами
Для этого записываешь в имя ентити хендл на его тип. Затем когда выбираешь ентити, читаешь хендл на тип из его имени и получаешь доступ к полям типа, вот так:
NameEntity b\entity, Handle(b) .... pick = CameraPick(camera, mx, my) If Pick <> 0 Then b.bot = Object.Bot(EntityName(Pick)) If b <> Null Then ;-- Обработка событий Select b\loyalty case Svoi /////// case Chujoi /////// case Neitral /////// End Select EndIf EndIf |
Ответ: Управление переименованными чайлдами
H@NON
Вот ты пишешь : Код:
b.bot = Object.Bot(EntityName(Pick)) а если у меня десять типов ? И у всех свои уникальные поля. Тип здание, тип ёлка, тип камень, мало ли, как тогда ? А для узкого применения способ наверное хороший. |
Ответ: Управление переименованными чайлдами
Для выбора из нескольких типов конструкция примет такой вид:
Код:
b.bot = Object.Bot(EntityName(Pick)) |
Ответ: Управление переименованными чайлдами
Погоди-погоди...
дай-ка вкурить... Поправьте меня если я где-то ошибаюсь. -Вот я назначаю хэндл на имя меша, фактически. -Затем делаем пик на меше. -Проверяем существует ли объект. -Назначаем временную переменную, присваиваем ей первый попавшийся тип, и выполняем команду Object этого же типа от пикнутого имени. -Если тип временной переменной совпадает с Object от пикнутого - выполняем дальше, если нет - Object возвращает 0, выполняем Else. Я верно понимаю ? |
Ответ: Управление переименованными чайлдами
Хм, так вот, быть может я и не полностью понимаю как, но оно работает, за одним исключением :
Я поставил в сцену шарик не принадлежащий ни одному из типов, и вывожу содержание любого случайного поля любого типа - Text 20,20,unit\blabla, так вот если кликнуть на одиноко стоящий Entity "безтипного" шарика, то программа валится по причине несуществования unit\blabla. Можно конечно и не выводить этот текст, или не присваивать чему попало PickMode 2, но не грозит ли это какими-нибудь непредвиденными осложнениями в дальнейшем ? Поправка : любые операции вне цикла с Object - валят программу по причине несуществования. |
Часовой пояс GMT +4, время: 16:31. |
vBulletin® Version 3.6.5.
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Перевод: zCarot