IEnumerator BannerMoved() { //Данная функция перемешивает все баннеры //Создаем генератор случайных чисел и запоминаем число баннеров System.Random rn = new System.Random(); int Number = ADS_Banner_Information.Length - 1; //Начинаем цикл перемешивания, заметим что если поставлен флаг вернуть только один первый баннер - перемешивание не происходит while (Number > 0 && !FirstBanner) { //Принцип перемешивания: //Производим перемену значений ячеек, причем берем всегда последнюю ячейку, //записываем в нее случайно выбранное значение из случайной ячейки, в которую //записываем значение из последней ячейки. Т.О. последняя ячейка получает //значение из середины массива, при следующей же итерации последняя ячейка уже не будет //задействована и ее значение не поменяется. //получаем число на интервале от 1 до Number int j = rn.Next(0, Number + 1); //Запоминаем значение ячейки с индексом Number Ads_info Banner = ADS_Banner_Information[Number]; //Записываем в ячейку с индексом Number значение ячейки с индексом J ADS_Banner_Information[Number] = ADS_Banner_Information[j]; //в ячейку с индексом J записываем запомненное значение из ячейки с индексом Number ADS_Banner_Information[j] = Banner; //Уменьшаем число итераций Number--; //Передаем управление yield return(new WaitForSeconds(0.05f)); } }
//Данная функция служит для создания баннера. возвращает 1 если показ удачный, 0 - не удачный. private bool CreatBanner(Ads_info Info, Texture2D Tex = null) { //Сразу проверяем соответствует ли тип баннера, который требуется отобразить типу который отображает скрипт if (TYPE_BANNER.Contains(Info.TYPE)) { //Если текстура не передана загружаем ее из памяти, если текстура иконки передана исп ее string Origin = Path.Combine(Application.persistentDataPath, Info.BANNER + ".png"); if (System.IO.File.Exists(Origin) && Permission.HasUserAuthorizedPermission(Permission.ExternalStorageRead)) { //Если файл существует загружаем его Tex = new Texture2D(1, 1); Tex.LoadImage(System.IO.File.ReadAllBytes(Origin)); } else if (Tex == null) { //Если файл иконки не существует, используем текстуру "Ошибку" Tex = ErrorTextures; } //Контейнер префаба баннера GameObject Banner; Banner = Instantiate(BannerPrefabs); Banner.transform.SetParent(Conteiner.transform, false); //Вешаем на его скрипт Ссылку для перехода при клике по баннеру и добавляем иконку (ЗАМЕТИМ ЧТО ССЫЛКА И ИКОНКА ЭТО ОБЪЩИЕ ЭЛЕМЕНТЫ У ВСЕХ ТИПОВ БАННЕРОВ) Banner.GetComponent <ClicToBanner>().URL_TO_ANCHOR = Info.URL_REFERRER; Banner.transform.Find("Icon").GetComponent <Image>().sprite = Sprite.Create(Tex, new Rect(0, 0, Tex.width, Tex.height), new Vector2(0.5f, 0.5f)); //В соответствии с типом баннера вносим в его поля информацию //BIG_BANNER - содержит и название и описание //MIN_BANNER - содержит только название switch (Info.TYPE) { case "BIG": Banner.transform.Find("Coment").GetComponent <Text>().text = Info.TEXT_ADS; Banner.transform.Find("Name").GetComponent <Text>().text = Info.TITLE; break; case "MIN": Banner.transform.Find("Name").GetComponent <Text>().text = Info.TITLE; break; } return(true); } return(false); }