Форум программистов, компьютерный форум, киберфорум
Unity, Unity3D
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/4: Рейтинг темы: голосов - 4, средняя оценка - 5.00
0 / 0 / 0
Регистрация: 06.11.2023
Сообщений: 46

Плавное появление картинки при переходе на сцену

14.03.2024, 22:02. Показов 1266. Ответов 14

Студворк — интернет-сервис помощи студентам
Здравствуйте. Не нашла ответа на свой вопрос.
На канвасе есть картинка, у которой при заходе на сцену прозрачность должна быть 0. Затем плавное перемещение к 255. То есть плавное появление на экране. Может, я не так поняла, и надо работать не с прозрачностью, а с функцией Start?
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
14.03.2024, 22:02
Ответы с готовыми решениями:

Плавное появление картинки при наведении на ссылку
var imgs = new Array("img1.png", "img2.png", "img3.png"); function sh_img(a) { var obj = document.getElementById("img"); ...

Сделать плавное появление картинки при загрузке страницы
есть две картинки нужно чтобы при загрузке страницы они в течении 5 секунда появились, поможете с кодом, а то видел много примеров но так...

Плавное появление картинки
На форме размещен компонент TImage1 unit Unit1; {$mode objfpc}{$H+} interface uses

14
1144 / 309 / 159
Регистрация: 30.07.2022
Сообщений: 1,783
Записей в блоге: 4
14.03.2024, 22:22
Meerkat_GG, а что именно не работает?
картинка плавно не появляется?
или сразу появляется а не плавно?
покажите ваш код, что бы нам было что чинить.
0
0 / 0 / 0
Регистрация: 06.11.2023
Сообщений: 46
14.03.2024, 23:18  [ТС]
В том то и дело, что даже написать не смогла. Не понимаю за что браться, так как ничего похожего не нашла
0
304 / 211 / 96
Регистрация: 04.07.2012
Сообщений: 903
14.03.2024, 23:39
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
using UnityEngine.UI;
 
public GameObject MainScene;
float timer = 0;
RawImage screenShot;
 
Start() {
screenShot = gameObject.GetComponent<RawImage>();
}
 
Update() {
if (timer < 5f)
timer += Time.deltaTime;
screenShot.color = new Color(0, 0, 0, timer / 5);
} else {
MainScene.SetActive(true);
Destroy(gameObject);
}
}
Видимо Вы хотели что-то типа?
Скрипт вешается на скриншот сцены, в объект MainScene запихиваем всю остальную сцену. В начале в течении 5 секунд будет проявляться скриншот (так сказать статичная сцена). Потом включится сама сцена, а скриншот удалится.
0
1144 / 309 / 159
Регистрация: 30.07.2022
Сообщений: 1,783
Записей в блоге: 4
15.03.2024, 05:28
Цитата Сообщение от Meerkat_GG Посмотреть сообщение
Не понимаю за что браться
на картинке должен висеть скрипт с примерно следующим содержанием
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
using UnityEngine;
using UnityEngine.UI;//для начала подключите библиотеку для работы с объектами canvas
 
public class SmoothImageFade : MonoBehaviour
{
    private Image _image;//это наша картинки, ссылку на неё получим автоматически в Start
    private float currentAlpha = 0f;//это значение с помощью которого мы будем плавно менять прозрачность
 
    void Start()
    {
        _image = GetComponent<Image>();// получим компонент Image нашей картинки
    }
    
    void Update()
    {
        currentAlpha = Mathf.Lerp(0f, 255f, Time.Deltatime * 1.5f); //плавно увеличиваем значение от 0 до 255. (1.5f - это скорость, её можно настроить под себя)
        _image.color = new Color(image.color.r, image.color.g, image.color.b, currentAlpha);// передаём плавное изменение прозрачности, сохраняя свет картинки.
    }
}


Документация Mathf.Lerp

PS:писал от руки, могут быть опечатки в коде.
0
399 / 308 / 104
Регистрация: 07.05.2017
Сообщений: 2,217
15.03.2024, 20:44
https://docs.unity3d.com/Scrip... .Lerp.html
0
Никто
 Аватар для ZIU
33 / 19 / 2
Регистрация: 16.07.2023
Сообщений: 344
16.03.2024, 06:55
Объявите переменную times типа float.

В апдейте создайте
C#
1
times = times * Time.deltaTime
И кажый несколько секунд отнимайте единицу прозрачности и объекта. Когда прозрачность будет равна 0 , отключайте таймер.
0
0 / 0 / 0
Регистрация: 06.11.2023
Сообщений: 46
18.03.2024, 02:33  [ТС]
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
using UnityEngine;
using UnityEngine.UI;
 
public class PictureFade : MonoBehaviour
{
    private Image _image;
    private float currentAlpha = 0f;
 
    void Start()
    {
        _image = GetComponent<Image>();
    }
 
    void Update()
    {
        currentAlpha = Mathf.Lerp(0f, 255f, Time.deltaTime * 1.5f);
        _image.color = new Color(_image.color.r, _image.color.g, _image.color.b, currentAlpha);
    }
}
_image надо было подправить, но все равно не работает. При 0 и 255 стартовой прозрачности просто появляется сразу картинка. Всю голову уже сломала(

Добавлено через 44 секунды
Можно пример? Думала, все будет проще
0
1144 / 309 / 159
Регистрация: 30.07.2022
Сообщений: 1,783
Записей в блоге: 4
18.03.2024, 06:37
Лучший ответ Сообщение было отмечено Meerkat_GG как решение

Решение

Meerkat_GG, действительно Lerp себя как то странно ведёт.
замените на
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
using UnityEngine;
using UnityEngine.UI;
 
public class PictureFade : MonoBehaviour
{
    private Image _image;
    private float currentAlpha = 0f;
 
    void Start()
    {
        _image = GetComponent<Image>();
    }
 
    void Update()
    {
        if(currentAlpha < 255) currentAlpha += Time.deltaTime * 0.1f;
        _image.color = new Color(_image.color.r, _image.color.g, _image.color.b, currentAlpha);
    }
}
1
304 / 211 / 96
Регистрация: 04.07.2012
Сообщений: 903
18.03.2024, 08:52
А может проблема в том, что Color принимает значения от 0 до 1?
Цитата Сообщение от Erdinger Посмотреть сообщение
if (timer < 5f) {
timer += Time.deltaTime;
screenShot.color = new Color(0, 0, 0, timer / 5);
Можно использовать Lerp, но всё же в этом диапозоне.
1
1144 / 309 / 159
Регистрация: 30.07.2022
Сообщений: 1,783
Записей в блоге: 4
18.03.2024, 18:57
Erdinger, нет
Цитата Сообщение от ieretsumi Посмотреть сообщение
if(currentAlpha < 255) currentAlpha += Time.deltaTime * 0.1f;
данный вариант тестился и все великолепно работает.
0
399 / 308 / 104
Регистрация: 07.05.2017
Сообщений: 2,217
18.03.2024, 19:47
а чем метод Color.Lerp не устраивает ?
Цитата Сообщение от Gammister Посмотреть сообщение
https://docs.unity3d.com/Scrip... .Lerp.html
во первых каждый кадр новый цвет не создается (два готовых цвета выведены в глобальные переменные), и память не так дергает. не работает что-ли ? ))
0
1144 / 309 / 159
Регистрация: 30.07.2022
Сообщений: 1,783
Записей в блоге: 4
18.03.2024, 20:15
Gammister, а когда здесь кто то следовал советам документацию почитать?
0
399 / 308 / 104
Регистрация: 07.05.2017
Сообщений: 2,217
18.03.2024, 20:20
звучит убедительно
0
0 / 0 / 0
Регистрация: 06.11.2023
Сообщений: 46
19.03.2024, 05:03  [ТС]
Помогло. Всем большое спасибо!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
19.03.2024, 05:03
Помогаю со студенческими работами здесь

плавное появление картинки
здравствуйте. у меня есть скрипт который меняет текст через определенное время. так же он меняет по очередности картинки. Хотелось бы, чтоб...

Плавное появление картинки в PictureBox
Такая проблема. Нужно, что бы при нажатии на PictureBox backgrounimage анимационно исчез, и появилась эта же картинка, но повернутая на 90...

Плавное появление картинки в ui slider
здравствуйте. делаю слайдер с помощью плагина ui slider подскажите, пожалуйста, как сделать, чтобы картинки плавно появлялись при...

Сделать плавное появление картинки
Вот рабочий скрипт Меняется картинка каждую 4,5 секунды Мне нужно сделать плавное появление картинки,а не такое быстрое var...

Плавное появление картинки на форме
Доброго времени суток, возникла потребность плавного возникновения картинки, но свойства Opacity у него как у формы я не нашел, какими...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Работа со звуком через SDL3_mixer
8Observer8 08.02.2026
Содержание блога Пошагово создадим проект для загрузки звукового файла и воспроизведения звука с помощью библиотеки SDL3_mixer. Звук будет воспроизводиться по клику мышки по холсту на Desktop и по. . .
SDL3 для Web (WebAssembly): Основы отладки веб-приложений на SDL3 по USB и Wi-Fi, запущенных в браузере мобильных устройств
8Observer8 07.02.2026
Содержание блога Браузер Chrome имеет средства для отладки мобильных веб-приложений по USB. В этой пошаговой инструкции ограничимся работой с консолью. Вывод в консоль - это часть процесса. . .
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru