Фоны
В отличие от персонажей, фоны – это акторы, используемые для представления заднего плана сцены: локаций, декораций, пейзажей – всего, что всегда должно появляться позади персонажей.
Фоновый актор определяется с помощью имени, внешности, видимости и трансформации (такой как положение, поворот, масштаб). Он может изменять внешность, видимость и трансформироваться с течением времени.
Поведение фонов можно настроить с помощью контекстного меню Naninovel -> Configuration -> Backgrounds
; доступные параметры см. в разделе Руководство по конфигурации. Доступ к менеджеру ресурсов фонов можно получить с помощью контекстного меню Naninovel -> Resources -> Backgrounds
.
Если у вас много фонов, и их неудобно назначать через меню редактора, можно просто поместить их в папку Resources/Naninovel/Backgrounds
, рассортировав их по папкам, соответствующим идентификаторам акторов. Например, чтобы добавить внешность для фонового актора с ID "MainBackground", сохраните текстуры (спрайты) в папке Resources/Naninovel/Backgrounds/MainBackground
, и они автоматически будут доступны в сценариях.
Вы можете дополнительно организовать ресурсы внешностей с помощью подпапок, если хотите; в этом случае используйте прямой слеш (/
) при ссылке на них в сценариях Naninovel. Например, текстура внешности по адресу Resources/Naninovel/Backgrounds/MainBackground/Events/CG251
может быть объявлена как Events/CG251
.
Также можно использовать систему адресируемых ассетов, чтобы вручную распределить ресурсы. Чтобы предоставить доступ к ассету, назначьте адрес, равный пути, который вы использовали бы для его объявления с помощью метода, описанного выше, за исключением опущенной части "Resources/". Например, для объявления внешности "Beach" для фона "MainBackground" назначьте ассету следующий адрес: Naninovel/Backgrounds/MainBackground/Beach
. Имейте в виду, что адресируемый провайдер по умолчанию не используется в редакторе; вы можете разрешить его, включив свойство Enable Addressable In Editor
в меню конфигурации провайдера ресурсов.
В сценариях Naninovel фоны в основном контролируются с помощью команды @back
:
; Установить `River` как внешность основного фона
@back River
; То же, что выше, но с использованием эффекта перехода `RadialBlur`
@back River.RadialBlur
Фоны обрабатываются немного иначе, нежели персонажи, чтобы лучше приспособиться к традиционному течению сценария визуальных новелл. Большую часть времени вы, вероятно, будете иметь одного фонового актора в сцене, который будет постоянно менять внешности. Чтобы избавиться от лишнего повторения одного и того же ID актора в сценариях, можно предоставить только внешность фона и тип перехода (необязательно) в качестве безымянного параметра, что автоматически преобразует актора "MainBackground". Если это не так, ID фонового актора может быть конкретно указан с помощью параметра id
:
; Дан фоновый актор `CityVideo` с внешностями `Night` и `Day` (видеоклипы)
; Вывести в качестве дневного фона проигрываемый видеоклип
@back Day id:CityVideo
; Перейти к ночному фону с эффектом `Ripple`
@back Night.Ripple id:CityVideo
; Скрыть фон
@hide CityVideo
Запись актора "MainBackground" создается по умолчанию в диспетчере фоновых ресурсов и не может быть переименована или удалена; однако параметры основных фонов (реализация, pivot, PPU и т. д.) могут быть свободно изменены.
Позы
Каждый фон имеет свойство Poses
, позволяющее задавать различные именованные состояния ("позы").
Название позы может быть использовано в качестве внешности в команде @back
для применения всех параметров, указанных в позе сразу, вместо того, чтобы указывать их по отдельности с помощью команд параметров.
; Данная поза `Day` определена для основного фона,
; применяет все параметры, указанные в состоянии позы.
@back Day
; То же самое, что выше, но для фонового актора с ID `City`
; и с помощью перехода `DropFade` за 3 секунды.
@back Day id:City transition:DropFade time:3
Обратите внимание, что когда поза используется в качестве внешности, вы все еще можете переопределить отдельные параметры, например:
; Данная поза `Day` определена для основного фона,
; применяет все параметры, указанные в состоянии позы,
; за исключением оттенка, который переопределён отдельной командой.
@back Day tint:#ff45cb
Спрайтовые фоны
Спрайтовая реализация акторов фона является наиболее распространенной и простой; она использует один спрайтовый ассет для представления внешности фона. Источником спрайта может быть изображение в формате .jpg
или .png
.
Видео-фоны
Видео-фоны используют ассеты видеоклипов ассет для представления внешности фона.
Видео-фоны могут управляться только графическим интерфейсом редактора.
Поддерживаемые видеоформаты для каждой платформы см. в разделе документации Unity для видеоресурсов.
Для справки, вот подробные параметры видео фонового видеоклипа, который используется в нашей демо-версии WebGL:
Container : MPEG-4
Container profile : Base Media
Container codec ID : isom (isom/iso2/avc1/mp41)
Format : AVC
Format/Info : Advanced Video Codec
Format profile : High@L4
Format settings, CABAC : Yes
Format settings, RefFrames : 4 frames
Codec ID : avc1
Codec ID/Info : Advanced Video Coding
Bit rate : 3 196 kb/s
Width : 1 920 pixels
Height : 1 080 pixels
Display aspect ratio : 16:9
Frame rate mode : Constant
Frame rate : 25.000 FPS
Color space : YUV
Chroma subsampling : 4:2:0
Bit depth : 8 bits
Scan type : Progressive
Writing library : x264 core 148 r2795 aaa9aa8
Encoding settings : cabac=1 / ref=3 / deblock=1:0:0 / analyse=0x3:0x113 / me=hex / subme=7 / psy=1 / psy_rd=1.00:0.00 / mixed_ref=1 / me_range=16 / chroma_me=1 / trellis=1 / 8x8dct=1 / cqm=0 / deadzone=21,11 / fast_pskip=1 / chroma_qp_offset=-2 / threads=12 / lookahead_threads=2 / sliced_threads=0 / nr=0 / decimate=1 / interlaced=0 / bluray_compat=0 / constrained_intra=0 / bframes=3 / b_pyramid=2 / b_adapt=1 / b_bias=0 / direct=1 / weightb=1 / open_gop=0 / weightp=2 / keyint=250 / keyint_min=25 / scenecut=40 / intra_refresh=0 / rc_lookahead=40 / rc=crf / mbtree=1 / crf=23.0 / qcomp=0.60 / qpmin=0 / qpmax=69 / qpstep=4 / ip_ratio=1.40 / aq=1:1.00
А вот настройки импорта Unity для этого видеоклипа:
В зависимости от целевой платформы может потребоваться включение перекодирования в настройках импорта видеоклипов.
EXAMPLE
В случае возникновения проблем с достижением плавного лупа убедитесь, что видео имеет одинаковые кадры в начале и конце, а также совместимую настройку кодирования; проверьте наш проект с примером зацикленного видео для справки.
Имейте в виду, что на WebGL видеоплеер может работать только в потоковом режиме, поэтому все видеоресурсы будут скопированы в папку Assets/StreamingAssets/Backgrounds
при создании проигрывателя WebGL. Папка StreamingAssets также появится в выходном каталоге сборки; убедитесь, что вы сохранили ее при публикации сборки, и убедитесь, что ваш веб-сервер позволяет считывать данные из этой папки.
Послойные фоны
Послойная реализация позволяет создавать фоны из нескольких спрайтов (слоев), а затем переключать их по отдельности с помощью сценариев Naninovel во время выполнения.
Чтобы создать префаб послойного фона, используйте контекстное меню ассетов Create -> Naninovel -> Background -> Layered
. Войдите в режим редактирования префаба для составления слоев. По умолчанию будет создано несколько слоев и групп. Вы можете использовать их или удалить и добавить свои собственные.
Послойные фоны схожи с послойными персонажами; обратитесь к документации для получения дополнительной информации о том, как настроить и управлять ими с помощью сценариев Naninovel.
Не забывайте, что безымянный параметр в команде @back
ожидает внешность и тип перехода (а не ID и внешность, как в команде @char
), поэтому указывайте выражения в композиции слоёв следующим образом:
; Дан фоновый актор "LayeredForest"
@back Group>Layer,Other/Group+Layer,-RootLayer.TransitionType id:LayeredForest
Универсальные фоны
Универсальный фон – это наиболее гибкая реализация фонового актора. Он основан на префабе с компонентом BackgroundActorBehaviour
, прикрепленным к корневому объекту. Изменения внешности и все остальные фоновые параметры маршрутизируются как события Unity, что позволяет реализовать поведение управляемого объекта любым удобным вам способом.
Чтобы создать префаб универсального фона по шаблону, используйте контекстное меню ассета Create -> Naninovel -> Background -> Generic
.
Универсальные фоны очень похожи на универсальных персонажей; ознакомьтесь с учебным видео по настройке анимированной 3D-модели в качестве универсального персонажа для одного из возможных примеров использования.
Фоны сцен
Вы можете использовать сцену Unity в качестве заднего плана с реализацией фона сцены.
Фоны сцен могут управляться только графическим интерфейсом редактора; ресурсы сцен должны храниться в папке проекта Assets/Scenes
.
Первым делом создайте новую (или переместите существующую) сцену в папку Assets/Scenes
и убедитесь, что в ней есть хотя бы одна камера. После загрузки фона сцены Naninovel назначит текстуру рендеринга первой найденной камере в сцене. Затем текстура рендеринга будет назначена фоновому спрайту, представляющему фон внутри пространства сцены Naninovel. Таким образом, фон сцены сможет сосуществовать с другими акторами фонов и персонажей, поддерживать все эффекты перехода фонов и будет масштабируем для обработки различных соотношений сторон дисплея.
Убедитесь, что объекты сцены расположены в пространстве так, чтобы они не перекрывались объектами из других сцен, которые потенциально могут быть загружены одновременно (например, будучи объявлены в одном сценарии Naninovel). Кроме того, имейте в виду, что в случае, если фоновый объект сцены расположен вблизи начала координат глобального пространства (x0 y0 z0
), он может быть визуализирован основной камерой Naninovel; чтобы предотвратить это, сместите все объекты сцены относительно глобального источника, либо используйте Configuration -> Engine -> Override Objects Layer
для изоляции связанных с Naninovel объектов с помощью слоёв.
После завершения настройки сцены создайте новый фоновый актор через меню Naninovel -> Configuration -> Backgrounds
, выберите реализацию SceneBackground
и добавьте ассет сцены к ресурсам актора.
При назначении ресурсов для актора фона сцены соответствующие ассеты должны автоматически добавляться в настройки сборки; если вы получаете сообщение об ошибке, что ресурс сцены не был добавлен в сборку, попробуйте добавить его вручную.
Теперь вы можете использовать команду @back
для управления созданным фоновым актором сцены, например:
@back SceneName id:ActorId