Суббота, 01 Октября 2022, 05:34

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 1
  • 1
Модератор форума: beril  
Форум игроделов » Движки для разработки игр и сложные системы разработки » Unity » Массив (1)
Массив
Valik_FenkoДата: Понедельник, 18 Января 2016, 14:16 | Сообщение # 1
почетный гость
Сейчас нет на сайте
Есть обыкновенный одномерный массив из 4 элементов,мне нужно что сделать
вот допустим по умолчанию все элементы массива равны -1.Потом они могут изменятся программой
Скажм массив будет выглядеть вот так:

1,-1,0,-1

и мне нужно сделать так чтобы элемент массива не равный -1 максимально сдвинулся влево и принял такой вид

1,0,-1,-1.
У меня получилось сделать это,но есть проблемы с элементами массива когда все несколько элеметов не равны -1 и в ходе программы средний элемент поставить на -1.Тогда 2 предидущих тоже станут -1,непонятно че короче с ним происходит =).Код выглядит так:
Код
for (int l = 0; l <= Player.LastOpenBag.Length; l++)
  {
   if(Player.LastOpenBag[l] == -1)
   {
    for(int i = 0;i < Player.LastOpenBag.Length;i++)
    {
     if(Player.LastOpenBag[i] != -1 && i>l && i!=l)
     {
      Player.LastOpenBag[l] = Player.LastOpenBag[i];
      Player.LastOpenBag[i] = -1;
     }
    }
   }
  }


Этот код валяется в FixedUpdate.Повторю.Я хочу сделать чтоб все элементы массива не равные -1 скучковались левее,те что равны -1 справа


Сообщение отредактировал Valik_Fenko - Понедельник, 18 Января 2016, 14:20
OpenGOOДата: Понедельник, 18 Января 2016, 17:23 | Сообщение # 2
почти ветеран
Сейчас нет на сайте
Valik_Fenko, Сортировка нужна?

Мои проекты:
- Свободный и открытый клон World Of Goo
- TrueEngine2D (2D игровой фреймворк основанный на FreeBASIC)

[GameMaker: Studio v1.4.9999]
karuyДата: Понедельник, 18 Января 2016, 18:56 | Сообщение # 3
заслуженный участник
Сейчас нет на сайте
Valik_Fenko,
Код
var aboveZero = Player.LastOpenBag.Select(x => x).Where(x => x >= 0).ToList();
var lessThatZero = Player.LastOpenBag.Select(x => x).Where(x => x < 0).ToList();

Player.LastOpenBag = aboveZero.Concat(lessThatZero).ToArray();

За это я и не люблю юнити, за его низкий порог вхождения, не заставляет народ думать.


Сообщение отредактировал karuy - Понедельник, 18 Января 2016, 18:56
Valik_FenkoДата: Понедельник, 18 Января 2016, 22:38 | Сообщение # 4
почетный гость
Сейчас нет на сайте
karuy.Моя код был рабочий.Надо только было break; поставить в цикле...Сам разобрался

Добавлено (18 января 2016, 22:38)
---------------------------------------------
и что есть var? это же Java я просто с c# работаю.Пардон ,забыл уточнить

berilДата: Понедельник, 18 Января 2016, 22:40 | Сообщение # 5
Я не ленивый, я — энергосберегающий
Сейчас нет на сайте
Цитата Valik_Fenko ()
и что есть var? это же Java я просто с c# работаю.Пардон ,забыл уточнить

ссылка




Накодил? Убери за собой!
Инвентарь в Unity(UI)
Инвентарь в Unity(GUI)
Форум игроделов » Движки для разработки игр и сложные системы разработки » Unity » Массив (1)
  • Страница 1 из 1
  • 1
Поиск:

Все права сохранены. GcUp.ru © 2008-2022 Рейтинг