# Фоны

В отличие от персонажей, фоны – это акторы, используемые для представления заднего плана сцены: локаций, декораций, пейзажей – всего, что всегда должно появляться позади персонажей.

Фоновый актор определяется с помощью имени, внешности, видимости и трансформации (такой как положение, поворот, масштаб). Он может изменять внешность, видимость и трансформироваться с течением времени.

Поведение фонов можно настроить с помощью контекстного меню 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 для этого видеоклипа:

В зависимости от целевой платформы может потребоваться включение перекодирования в настройках импорта видеоклипов.

ПРИМЕР

В случае возникновения проблем с достижением плавного лупа убедитесь, что видео имеет одинаковые кадры в начале и конце, а также совместимую настройку кодирования; проверьте наш проект с примером зацикленного видео для справки.

Имейте в виду, что на 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
Обновлено: 10 октября 2020 г.