Код HashSet<CharacterController> set = new HashSet<CharacterController>(); // ^ это поле обьекта чтобы не мусорить // а в методе: var n = Physics.RaycastNonAlloc(ray, hits); set.Clear(); for(var i = 0; i < n; i++) { var character = hits[i].collider.GetComponentInParent<CharacterController>(); set.Add(character); }
foreach (var character in set) { // PROFIT }
для ускорения можно завести Dictonary<Collider,CharacterController> чтобы каждый раз не делать GetComponentInParent
Подксажите кто знает. Если на объекте висят несколько коллайдеров, то при вызове через него RaycastAll. При проходе через все нутренние коллайдеры объект вносится в лист, можно ли как то проверить на уникальность, чтоб не дублировать данные?
Дорбрый день, пишу прогу на C#, появилась необходимость выводит параметры на страницу браузера, причем обновление динамическое, как я понял необходимо использовать Ajax, но я ниразу не пользовался сетевыми технологиями, может кто подскажет в какую сторону копать и с чего начать?
У меня ось вперед красная. Мне нужно как то сделать вращение вокруг оси Z, но я не могу понять как это сделать. В коде почему то всегда синяя ось направляется на объект.
Да, я уже заметил ошибку, но как быть то auto_ptr копирует из вектора причем обнуляя его значение в нём. Нашел пример
Код
class MyClass { std::auto_ptr<Resource> res; public: MyClass(Resource* r): res(r) { } };// res is automatically freed when the MyClass object is destroyed
Но как адаптировать под свою задачу пока не очень понял.
Хм, интересно получается. Добавил флаг kill на проверку перед удалением из вектора, а в памяти он весит. Так что обычной проверкой на флаг вроде как справился.
Спасибо, но это немного не то. Как можно проверить что в указателе отсутствуют данные? При объявлении vector<object*> vec; object *obj=0;
obj=vec.at(i); if(!obj==0) { ///// } Если из вектора удалить данный объект, то в указателе будет мусор типа 0xfeefee, вот можно ли его как то обнаружить?
Добрый день товарищи. Есть вектор в кротом храню объекты, так же есть указатель
Код
objects* obj;//берет некоторый объект из вектора, далее делаем некоторые манипуляции с ним if(!obj==NULL) { SetPos(obj->x,obj->y); }
Но проблема в том, что данный объект может удалиться в любой момент, но условие все равно срабатывает и в функцию передаются неверные данные. Как можно это исправить?
Зачем тебе пихать указатель на объект в вектор? Код
objects.push_back(this);
Я про это знаю, просто у меня object родитель для других классов, и создаваться будут много и часто. Вот я и подумал зачем после каждого создания вызывать push_back. А так бы во время создания он бы сам помещался.
Здравствуйте, возник вопрос по классам: Есть класс object, а в main у меня объявлен вектор vector<object*> objects. Как можно поместить созданный объект сразу в вектор, я хочу чтобы при создании object в блоке создания object::object() он сам себя пихал в вектор. Пытался сделать так: extern vector<object*> objects; но выдает ошибки. Как можно сделать так, чтобы object сам записывался в вектор.
Всем привет, возник такой вопрос: На ГО прикрепил несколько объектов(child). Пытаюсь через рейкаст найти их, но всегда в RaycastHit находится родитель, так же коллизия присоединенных объектов считается как коллизия ГО. Вопрос, как можно получить коллидер и сам прикрепленный ГО?
Здравствуйте, подскажите как можно сделать так чтобы название файлов переберать в цикле. Например у меня есть фаилы с названиями 1.txt. 2.txt. 3.txt и т.д Как сделать в цикле for(int i=0;i<10;i++) { char *name=i+".txt" }; Или как лучьше сделать?
Здравствуйте, подскажите пожалуйста в каком формате лучьше сохранять анимированные изображения? Думал сначала на gif но прочитал, что у него с альфа каналом туговато.
Здравствуйте. У меня появилась проблема с очисткой памяти после удаления элемента из вектора, а точнее: Есть класс в котором есть переменная lifetime когда она равна 0, то флаг delete=true; а вектор обновляю так if(dyn.at(i)->kill==false) { dyn.at(i)->Update(); }else { dyn.erase(dyn.begin()+i); }; }; значение вектора то удаляется, а сам класс продолжает где то занимать место. Вопрос как сделать очистку?
Здравствуйте, недавно появилась проблема не знаю что делать. На компе стоят 2 винды обе XP на 1 стал при запуске рабочего стола вылетать синий эркан с ошибкой 0x000008e. Вторая винда работает нормально. Можно ли восстановить 1 без диска(привод не работает)?