示例#1
0
    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));
        }
    }
示例#2
0
    //Данная функция служит для создания баннера. возвращает 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);
    }