Releases: naninovel/docs
Naninovel 1.20
Preview
This release is not live yet and reflect work in progress for the upcoming update. Want to try new features and changes listed here before the stable release? Register your Naninovel copy and download the package via #download
channel of Naninovel's Discord.
Compatibility
Supported Unity version range: 2022.3 - 6
. Only latest patches of the LTS streams in the range are supported; compatibility issues with newer Unity releases (once they reach LTS) will be addressed in the next Naninovel releases. Be aware, that alpha, beta and non-LTS releases (eg 2022.1
or 2022.2
) are not supported. They may work, but we won't be able to provide any support for using Naninovel with them.
Recommended Unity version: 2022.3
. It's not uncommon for Unity to introduce regressions even in LTS patches (let alone major releases), so we highly recommend using this version to minimize production risks.
Upgrade Guide
When importing the package to a project with Naninovel version 1.18
or older first follow v1.19 release upgrade guide, then continue with the following instructions:
- Remove
Naninovel
folder from the project before importing the updated package. - In case using extension packages, update them: Live2D, Spine, Inventory, PlayMaker, AdventureCreator.
- Reset
Script Parser
in scripts configuration (in case not overriding the default implementation, just re-select the only available option). - In case using tips, replace the
|
separator with^
in the tips managed text document. - In case using
@if
conditional blocks, either make sure the commands inside blocks are not indented or switch to the new syntax with indentation and remove@endif
command. [doc] - In case using
@elseif ...
commands, replace them with@else if:...
. - In case using
do
parameter of@choice
command, replace it with nested callback. [doc] - In case using
do
parameter of@wait
command, replace it with@delay
command. [doc] - In case using
[skipInput]
command, replace the occurrences with[< skip!]
generic parameter. [doc] - In case using
ExpressionFunctions
attribute to expose custom expression functions, remove the attribute from the class and instead applyExpressionFunction
attribute to the methods of the class. [doc]
Remember to keep NaninovelData
folder when updating the engine to preserve project configuration and asset references. If an error about failing to load an asset is logged after the upgrade, restart Unity editor.
Be aware, that in-game saves (slots in save/load menu, values in settings menu and global game state) created with previous versions could cause unexpected behavior when loaded with the updated version; when patching a shipped project with a new Naninovel version, make sure existing saves work as expected.
In case using VS Code IDE extension, check for updates.
Don't forget to backup the project before upgrading or use a VCS.
Added
- Added nesting concept to NaniScript allowing to specify a block of commands nested under (associated with) other command. Various existing commands are now using this concept for more readable and concise syntax; added several new commands, which were previously impossible to represent in NaniScript without the new syntax: [doc]
- Upgraded
@if
and@else
commands to support nesting; [doc] - Upgraded
@choice
command to support nesting; [doc] - Added
@while
command for looping nested commands as long as condition is truthy; [doc] - Added
@delay
command allowing to delay execution of nested commands; [doc] - Added
@random
command allowing to randomly execute one of its children; [doc] - Added
@group
command allowing to join multiple lines into single execution block; [doc] - Added
@await
command allowing to await nested async commands before continuing script playback. Intended to be used withWait By Default
disabled in script player configuration, which is now the default in new projects. [doc]
- Upgraded
- Added boolean flags as shortcuts for boolean parameter values. [doc]
- Added a way to apply print parameters for parts or whole generic text lines. [doc]
- Added a way to delimit slack white space in generic lines with
[]
(empty inlined command). [doc] - Added
Conservative
,Optimistic
andLazy
resource policy modes instead ofStatic
andDynamic
. [doc] - Generic, Live2D and Spine actors now support multiple appearances applied at once to make setting up complex animation states easier. [doc]
- Added
Join Lines
to localization utility. When enabled, generic lines in localization documents will be kept in single line for convenience. [doc] - Annotations inside localization docs now also include gist of the translated content to give translators more context. [doc]
- Added
lock
parameter to@choice
command allowing to lock/disable a choice. [doc] - Added
Auto Detect Locale
to localization configuration. When enabled (default) will attempt to auto-detect locale using system language when the game is started first time. [doc] - Pagination reveal effect will now prompt for continue before changing page.
- Added
Has Name
to character configuration; when disabled, neither display name, nor actor ID will be displayed in printer UI. Useful for narrator-type characters with linked printers. [doc] - Added an option to supply font with community localization. [doc]
- Added
Separator Literal
to built-in Tips UI allowing to change character used to separate title, category and tip text in managed text records. - Added
Selected Prefix
to built-in Tips UI allowing to change unlockable ID prefix used to indicate that item was selected (seen) at least once. - Added
TipsPanel.HasUnselectedItem()
method allowing to check if the tips panel contains any unselected items. - Added
Build Resources
editor menu allowing to build Naninovel-related project resources (including addressables, when enabled) without building the player. - Added weak (informational) warnings in VS Code when a dynamic parameter value is preventing resource preloading.
- Appearances metadata (used for auto-completion in VS Code) for generic, live2d and spine actors is now generated based on trigger parameters in Animator component of the implementation prefab.
- Added a way to create identified text references by prepending
&
to the identifier. [doc] - Added an option to specify alias and documentation for custom expression functions.
- Added
Play SFX While Skipping
option to audio settings; when disabled,@sfx
commands withoutloop!
will not play while skipping. - Added
as
parameter to@print
command allowing to set custom name label; when combined withauthor
parameter now handling multiple authors (delimited with,
) and all authors specified with*
— useful for representing multiple characters authoring single text line. [doc] - IDE (VS Code) extension improvements:
- Label auto-completion and diagnostics no longer requires syncing metadata with editor;
- Already specified parameters are no longer suggested in the auto-completion list;
- Parameters, that has no effect or not supported by the command, such as
if
parameter in@if
command andwait
parameters in commands that are not async, are no longer suggested in the a...
Naninovel 1.19
Watch changes overview on YouTube: youtu.be/agyTc_GixSU
Read Before Upgrading
This release has major breaking changes requiring potentially labor-heavy upgrade procedures, namely:
- All the custom UIs built with legacy uGUI text have to be upgraded to use TMPro text instead;
- All the scenario script localizations have to be redone from scratch;
- All the auto-voicing has to be re-mapped from scratch.
Please consider the above when deciding whether to upgrade projects in late development stages and especially shipped projects. Complete upgrade guide can be found below.
Compatibility
Supported Unity version range: 2019.4 - 2022.3
. Only latest patches of the LTS streams in the range are supported; compatibility issues with newer Unity releases (once they reach LTS) will be addressed in the next Naninovel releases. Be aware, that alpha, beta and non-LTS releases (eg 2022.1
or 2022.2
) are not supported. They may work, but we won't be able to provide any support for using Naninovel with them.
Recommended Unity version: 2019.4.40
. It's not uncommon for Unity to introduce regressions even in LTS patches (let alone major releases), so we highly recommend using this version to minimize production risks.
Upgrade Guide
When importing the package to a project with Naninovel version 1.17
or older first follow v1.18 release upgrade guide, then continue with the following instructions:
- Remove
Naninovel
folder from the project before importing the updated package. - In case using extension packages, update them: Live2D, Spine, Inventory, PlayMaker, AdventureCreator. Spreadsheet tool is now embedded to the core package, so if you have it installed, remove the folder with the tool.
- Due to removal of the legacy (uGUI) text components and text reveal revamp, you may have to re-setup various UI objects; eg: customized built-in UIs, text printers, font settings, etc.
- In case using line breaks via
\n
in managed text values, replace them with<br>
. - In case using expressions for generic line author (eg,
{mc}: Hi
), use display name instead. (guide) - In case having existing tips managed text documents, either remove
Tips
from managed text config'sMultiline Categories
list or format existing documents in multiline (same as script localization documents). - In case having existing script localization documents, delete and re-create them with the new system. (guide)
- In case having existing voice mappings via voice map utility, re-map the clips. (guide)
- To use new adapt to input mode feature, add
Page
,Tab
,Delete
,NavigateX
,NavigateY
,ScrollY
andToggleConsole
bindings in input config with enabledAlways Process
option (actual action bindings are configured via Unity's input system actions asset); check input example project for reference setup. - In case using custom Title UI, enable
Visible on Awake
on the UI prefab to show it after engine is initialized. - In case using bridging (VS Code extension or web editor), install Newtonsoft Json via Unity's package manager. (the package is only used in editor and is not required by Naninovel runtime in builds)
- In case using custom commands and VS Code extension, purge cached metadata in VS Code by pressing
Ctrl+Shift+P
and selectingNaninovel: Purge cached Metadata
.
Remember to keep NaninovelData
folder when updating the engine to preserve project configuration and asset references. If an error about failing to load an asset is logged after the upgrade, restart Unity editor.
Be aware, that in-game saves (slots in save/load menu, values in settings menu and global game state) created with previous versions could cause unexpected behavior when loaded with the updated version; when patching a shipped project with a new Naninovel version, make sure existing saves work as expected.
In case using VS Code IDE extension, check for updates.
Don't forget to backup the project before upgrading or use a VCS.
Added
- Added adapt to input mode feature, which detects current active input mode (mouse and keyboard, gamepad or touch) and adapts the UI look and navigation accordingly. (guide)
- Default UI has been updated for more consistent look and better UX.
- Added utilities for automated end-to-end scenario testing and coverage. (guide)
- Added community localization feature. (guide)
- Added
Stable Identification
option to script configuration menu; when enabled, Naninovel will automatically write unique persistent IDs to each localizable text parameter on script import. This allows preserving text association (eg, for localization or auto voicing) while editing text content. (guide) - Language is now switching faster and text is updated instantly in all the printers and UIs, including backlog.
- Added Character Extractor utility allowing to find all the unique text characters ever displayed to the player by Naninovel; useful for optimizing TMPro atlases, especially for CJK languages. (guide)
- Added
Render Camera
option to layered actors allowing to render the prefab content with a camera, which lifts all the previous limitations (such as lacking stencil support) and allows rendering non-trivial objects, like particle systems, trails, etc. (guide) - Added
Render Only
andDefault Appearance
options to layered behavior component allowing to outsource appearance handling to external mechanisms, such as Unity'sAnimator
. (guide) - Added
Slack Opacity
option to revealable text; when below 1 will change opacity of the text that was printed before last append. - Added
Reveal Paginator
component allowing to split the revealed text between virtual pages in case of overflow; enabled by default inFullscreen
printer. - Added event tags allowing to execute arbitrary actions when printed text is revealed. (guide)
- Added dedicated commands for all the built-in effects:
@blur
,@bokeh
,@glitch
,@rain
,@shake
,@snow
,@sun
. - Added
Load On Goto
option to script player configuration; when enabled (default) will showILoadingUI
when@goto
command requires loading another script to mask the loading process with the loading screen. - Added
ColorContext
andVectorContext
parameter value context attributes. - Added
Engine.UseLogger
method allowing to inject custom logger to be used by the engine. - Added clickable link to the script asset that is missing translation when using localization utility.
- Added
time
parameter to initialize engine method allowing to override time service used by Naninovel (eg, to make it use custom time/unscaledTime instead of Unity.Time values). - Added
Font Sizes
asset (created viaCreate -> Naninovel -> Font Sizes
asset context menu) assignable to font configuration of custom UIs and printers; can be used to share common font sizes across multiple UIs. - Added
Include Children
option to font change configuration; when enabled, font changes will aff...
Naninovel 1.18
Compatibility
Supported Unity versions: 2019.4.40
, 2020.3
, 2021.3
. Previous and non-LTS (tech) versions are not supported; compatibility issues with newer versions will be addressed in the next Naninovel releases.
Recommended Unity version: 2019.4.40
. It's not uncommon for Unity to introduce regressions even in LTS patches (let alone minor and major releases), so we highly recommend using this version to minimize production risks.
Upgrade Guide
When importing the package to a project with Naninovel version 1.16
or older first follow v1.17 release upgrade guide, then continue with the following instructions:
- Remove
Naninovel
folder from the project before importing the updated package. - In case using extension packages, update them: Spreadsheet, Live2D, Spine, Inventory, PlayMaker, AdventureCreator.
- To use the newly added chat reply choice handler, add
ChatReply
actor in resources manager; built-in prefab is stored atNaninovel/Prefabs/ChoiceHandlers
. - It's no longer required to double-escape quotes inside script expressions, so remove the additional escape symbols in case you've used them in scenario scripts; eg
@set var="lorem \\"ipsum\\""
should be changed to@set var="lorem \"ipsum\""
.
Remember to keep NaninovelData
folder when updating the engine to preserve project configuration and asset references. If an error about failing to load an asset is logged after the upgrade, restart Unity editor.
Be aware, that in-game saves (slots in save/load menu, values in settings menu and global game state) created with previous versions could cause unexpected behavior when loaded with the updated version; when patching a shipped project with a new Naninovel version, make sure existing saves work as expected.
In case using VS Code IDE extension, check for updates.
Don't forget to backup the project before upgrading or use a VCS.
Added
- Added Fountain converter tool allowing to convert
.fountain
screenplay documents into.nani
scripts. (guide) - Added shared poses allowing to re-use a pose between actors. (guide)
- Added an option to inject custom metadata providers. (guide)
- Added an option to specify constant expressions to be evaluated by the IDE extension. (guide)
- Added script labels auto-completion for
@goto
and@gosub
commands; can be disabled viaGenerate Label Metadata
option in engine configuration. - Added
@despawnAll
command allowing to de-spawn (destroy) all the currently spawned objects. - Added an option to filter and auto-asign items in voice map utility. (example)
- Added
Wait Hide On Choice
option to choice handlers. When enabled, choice handler will wait until the UI is completely hidden before proceeding when a choice is picked. (example) - Added
Hide In Thumbnail
option toCustom UI
component allowing to prevent specific UIs from appearing in save-load slot thumbnail. (example) - Added support for UI camera under URP.
- Added
Font Changer
component allowing to sync font with game settings on arbitrary game objects (eg, choice handler button prefabs). - Added support for blur FX for scene backgrounds.
- Added spine background actor implementation (via spine extension).
- Added
Wait Visibility Before Print
option to text printers; when enabled, fullChange Visibility Duration
will be awaited before starting to print the text. (example) - Added XML documentation files for the pre-compiled engine libraries.
- Added an option to auto-apply a font when a specific locale (language) is selected; set in UI configuration via font options. (example)
- Added
Default Slant Angle
to revealable tmpro text component allowing to set slant angle of the reveal rect outside of italic text. - Added
CSV
format option for voiceover document generation utility. - Added
Wait After Reveal Skip
option to printer metadata (enabled by default); if disabled, wait for input won't be activated when text reveal is skipped. (example) - Added an option to inject custom voiceover document generator. (guide)
- Added an option to inject custom spreadsheet processor. (guide)
- Added
Link Template
property andOn Link Clicked
event toNaninovel TMPro Text
component allowing to stylize the<link>
-tagged content and attach Unity event handlers when the links are clicked. - Added
ChatReply
built-in choice handler and updatedChat
andTMProChat
printers to support embedded choices. (guide) - Added a prompt to confirm directory clean when generating voiceover documents while the target directory is not empty.
- Added parameter to "LineReveal" transition effect allowing to reverse the effect.
- Added an option for a video actor appearance to not loop by appending
NoLoop
(not case sensitive) to the appearance name. - Exposed transitional renderer materials to allow setting properties of custom actor shaders.
- Expression functions now accept arguments of assignable types, even when they're not equal (eg, int to double).
- Making multiple UIs modal is now supported.
- Most members of the built-in resource providers can now be overridden.
- Bridging transport will now automatically scan port range starting with the preferred port specified in the engine configuration; no warnings will be logged when multiple editor instances are opened.
- VS Code IDE extension can now work in web browsers via vscode.dev.
- .NET runtime is no longer required by the VS Code IDE extension.
- It's now possible to localize UI resources (prefabs) in the same way as the other resource types.
- It's now possible to specify parameter context for the parameter fields declared in parent classes and override them; consult the updated IDE docs for examples.
- It's now possible to use layered expressions in generic text line author prefix, eg
Miho.Costume>Uniform: Hello!
. - A managed text document for locales (language tags) is now automatically generated and is used when displaying available languages in the settings menu allowing to change and/or localize them.
- Backgrounds of different sizes are now matched during transitions when match mode is set to crop.
- Shake printer FX implementation is no longer coupled with specific content object name.
- Script parse errors detected on asset import will now contain full file path.
- Spreadsheet extension will now specify associated file paths when processing exception occurs.
- Voiceover documents will now also contain voiced line hash.
- Improved package path resolving performance in editor.
Changed
- Minimum supported Unity version changed to
2019.4.35
due to #119. - Invisible UIs with
Canvas Group
component will now be set as non-interactable to improve keyboard and gamepad navigation. - Game objects under "Naninovel" root object are now grouped based on their type (UI, characters, backgrounds, etc).
- Default Naninovel addressable group will now have bundle mode set to
Pack Separately
to allow asset unloading. - Naninovel will now throw
Naninovel.Error
exception instead ofSystem.Exception
. - Changed some of the script parsing models and semantic tokens used to highlight the script in VS Code; refer to the IDE guide for the updated info.
- Type of all the pixels per unit (PPU) related properties has been changed from int to float for flexibility and better compatibility with Unity internals.
- It's no longer required to double-escape quotes inside script expressions.
- Command values in visual script editor are now displayed identical to the text in the inspected script. It's now expected for user to apply the same rules when specifying the values in visual editor, including wrapping the value in quotes in case they contain white space and escaping the quotes t...
Naninovel 1.17
Compatibility
Supported Unity versions range: from 2019.4.30
to 2021.2
. Previous versions are not supported; compatibility issues with newer (major) versions will be addressed once they're out of beta.
Recommended Unity version: 2019.4.30
.
Upgrade Guide
When importing the package to a project with Naninovel version 1.15
or older first follow v1.16 release upgrade guide, then continue with the following instructions:
- Remove
Naninovel
folder from the project before importing the updated package. - In case using extension packages, update them: Spreadsheet, Live2D, Spine, Inventory, PlayMaker, AdventureCreator.
- In case using message sound option for characters, select the playback type with the newly added
Message Sound Playback
option. - In case using engine's async APIs (eg, custom commands), change
CancellationToken
toAsyncToken
. (example) - In case using
Reveal SFX
in a text printer, use either the newly addedOn Reveal Started
andOn Reveal Finished
events (example) orChars SFX
property. - Remove
UniRx.Async
usings from custom async C# scripts (they're no longer required to referenceUniTask
types).
Remember to keep NaninovelData
folder when updating the engine to preserve project configuration and asset references.
Be aware, that in-game saves (slots in save/load menu, values in settings menu and global game state) created with previous versions could cause unexpected behavior when loaded with the updated version; when patching a shipped project with a new Naninovel version, make sure existing saves work as expected.
In case using VS Code IDE extension, check for updates.
Added
- Added audio support for video actors.
- Added
Add Ruby Line Height
property to Naninovel TMPro Text component allowing to disable auto line height compensation for the lines that contain ruby text. Disable and increase default text line height to ensure equal height for all lines when using ruby tags. (example) - Added
RevealableTMProText (Extra Effects)
revealable shader for TMPro text based on full SDF shader bundled with TMPro (the default one is based on mobile version). (example) - Added
Authored Template
property to text printer actor configuration allowing to specify processing for printed text messages with an author (direct speech). (guide) - Added
Toggle Skip
default input allowing to toggle skip input mode; default bindings are Tab on keyboard and right stick press on gamepad. To use the input in existing projects, add the binding in input configuration or input actions asset when using new input system. (example) - Added
Warn Untranslated
option to localization utility. When enabled and generating documents withTry Update
enabled, will log warnings when untranslated lines are found. (example) - Added invert option to custom transition. To invert, specify
1
as second parameter, eg:@back Appearance.Custom dissolve:Textures/Spiral params:,1
. - Added
time
parameter to@movie
command allowing to control the fade-in/out duration. - Added
Message Sound Playback
option to character metadata configuration allowing to select the sound playback type (looped, one shot or clipped). - Added universal serialization handlers (selected by default in new projects).
- Added
Engine.OnDestroyed
event invoked when the engine is destroyed. - Added
Exclude From Reset
property to new game button of default title UI, allowing to exclude specific engine services from state reset when starting a new game. (example) - Added
On Reveal Started
andOn Reveal Finished
Unity events to the text printers. (example) - Added an option for the text char reveal routines (char commands and char sfx) to trigger on any char; leave
Characters
field empty for that. - Added
On Unlocked
andOn Locked
Unity events toUnlockable Trigger
component. - Added
Wait By Default
option to script player configuration allowing to control whether the player should wait the played commands whenwait
parameter is not explicitly specified. - Added
Delete
input binding (delete keyboard and gamepad pause button by default) and an option to delete save-load slots with a gamepad and keyboard. (example) - Added
Disable Wait Input
option toPlay Script
component allowing to disable waiting for input mode when the script is played. (example) - Added UI navigation focus support for generic HID gamepads.
- Added
Default Duration
to the actor, camera and audio configurations allowing to set default duration of the modification commands; default value of thetime
parameter is no longer hard-coded. - Added
Choice Button Loader
property to choice configuration allowing to load custom button prefabs withoutResources
API (eg, via addressable or any other resource provider). (example) - Added load progress indicator to loading and engine initialization UIs. (example)
- Video actors now fade the volume when changing appearances or hiding/showing.
- Text preview printer now accepts any implementations of
IRevealableText
interface for better extensibility. - Script player will now attempt to find nearest playable inline index when loading state; will prevent crash when using localized scripts with extra commands, but could still lead to an undefined behavior (warning is logged in such cases).
- Most of the built-in async methods will now automatically handle async cancellation; it's no longer required to check for cancellation after awaiting such methods.
- Spreadsheet extension now supports organizing the scripts in subfolders.
- New line symbols (
\n
) are now supported in managed text documents. @set
command now supports compound assignment (+=
,-=
,/=
,*=
).- IDE extension will now show default parameter values. (example)
- IDE extension will now provide autocomplete for look direction parameter.
- It's now possible to update project metadata with a menu or a ctrl+shift+U hotkey. (example)
- Project metadata is now automatically generated and synced with IDE.
- IDE extension now shows currently played line and allows navigating scenario scripts. (guide)
- It's now possible to combine layered composition keys with expressions, eg
@char Miho.Uniform,Hair/Front>Short
. - Spreadsheet extension now support long script names when
Single Spreadsheet
is disabled. - It's now possible to use UI Toolkit as Naninovel UIs. (example)
Changed
- Minimum supported and recommended Unity version changed to 2019.4.30 due to a regression fix (#138).
- Changed movie player service and associated UI APIs. Instead of
OnMovieTextureReady
event usePlayAsync
method to get the movie texture and assign it to the UI withSetMovieTexture
; seeCommands/PlayMovie.cs
implementation for example. - Removed
Clip Message Sound
option from character metadata configuration and text printers; selectOne Shot Clipped
in the newly addedMessage Sound Playback
option instead. - Changed async cancellation API:
CancellationToken
struct has been renamed toAsyncToken
,CancelASAP
andCancelLazy
properties toCanceled
andCompleted
respectively. When a token is canceledAsyncOperationCanceled
exception will now be thrown. UniRx.Async
using is no longer required when usingUniTask
types.- When creating a new naninovel script with a name that already exist in script resources, an error will be logged and script won't be created.
- Removed
Reveal SFX
from text printers; use the newly added reveal events,Chars SFX
or character message sounds. - Removed
IDE Metadata
tool. The metadata is now automatically generated and synced with IDE (can be disabled in the engine configuration). - Renamed
IDE...
attributes to...Context
.
Fixed
- Fixed compatibility issues with Unity 2021.2
- Fixed revealable TMPro sprite shader (emoji will reveal correctly when emoji texture is assigned directly to the material; see UI project for example).
- Fixed (harmless) errors when generating localization scripts form other localization scripts with "Try Update" enabled and some of the target scripts missing.
- Fixed audio continue playing after hiding a video a...
Naninovel 1.16
Compatibility
Supported Unity versions range: from 2019.4.24
to 2020.3
. Previous versions are not supported; compatibility issues with newer (major) versions will be addressed once they're out of beta.
Recommended Unity version: 2019.4.24
.
Upgrade Guide
When importing the package to a project with Naninovel version 1.14
or older first follow v1.15 release upgrade guide, then continue with the following instructions:
- Remove
Naninovel
folder from the project before importing the updated package. - In case using extension packages, update them using following links:
- In case using sprite dicing, update the extension (remove and add it again in the package manager via the same git url).
Remember to keep NaninovelData/Resources
folder and NaninovelData/EditorResources.asset
file when updating the engine to preserve project configuration and asset references.
Be aware, that in-game saves (slots in save/load menu, values in settings menu and global game state) created with previous versions could cause unexpected behavior when loaded with the updated version; when patching a shipped project with a new Naninovel version, make sure existing saves work as expected.
In case using VS Code IDE extension, check for updates to handle changes in the commands API.
Added
- Added actor record assets allowing to manage actor metadata records (characters, backgrounds, printers, choice handlers) without using editor menus with support for multi-editing and organizing the records with folders. (example)
- Added
pos
(scene position),position
(world position),rotation
andscale
parameters to@spawn
command allowing to specify transform of the spawned objects. - Added
ActorPopup
property drawer attribute for drawing list of available actors in the Unity editor. - Added
GetName
built-in expression function allowing to get display name of a character with the provided ID. - Added
@unloadScene
command allowing to unload a Unity scene. - Added
@openURL
command allowing opening specified URL with web browser. - Added
On Appearance Changed
Unity event to layered actor behavior component. - Added
Paste Current Composition
context menu item allowing to paste current layered composition expression. (example) - Added gyroscope bindings for camera look to the default input actions.
- Added
Clip Rect Scale
property to revealable TMPro text component allowing to modify the reveal rect size. (example) - Added
Default Skip Mode
option to script player config allowing to specify default text skip mode to set when the game is first started. - Added
On Initialization Progress
Unity event to "EngineInitializationUI" for listening progress changed events. - Added
On Tint Changed
Unity event to text printers allowing reacting to tint color set via@printer
command. (example) - Added
IScriptPlayer.HasPlayed(scriptName)
method, allowing to check whether a script has been previously played. - Added
Play On Awake
property toPlay Script
component allowing to play the script automatically when the game object is instantiated. - Added
TMProChat
built-in printer. - Added
Naninovel TMPro Text
component — a wrapper over uGUI text mesh pro with ruby and tips tags and Arabic text support. - Added
remove
parameter to@hide
,@hideAll
and@hideChars
commands allowing to remove (destroy) resources associated with the hidden actors; can be used instead of@resetState
to prevent memory leaks. - Added
Render Rectangle
allowing to specify an area to render when using render actor to texture feature. - Added parameter for custom (dissolve texture) transition for smoothing (fuzzing) borders of the transition. (example)
- Naninovel scripts will now be automatically removed from the resources list when associated asset is deleted.
- Sprite dicing extension has been updated for better compression efficiency and speed; it now also possible specifying custom pivot in the diced sprites when
Keep Original
(pivot) is enabled in the atlas settings. - Choice handler buttons will now invoke show/hide events in sync with handler itself allowing to attach a custom behavior when choice is shown/selected.
- Updated built-in TMPro printers to support conservative memory usage, which prevents GC allocations when printed text message length is above certain threshold. If you're using custom printers, disable
Vertex Buffer Auto Size Reduction
on the TMPro text components manually. (ref issue) - Optimized script file watcher performance; only directories containing naniscripts will now be watched.
- It's no longer required to restart Unity editor when changing settings related to script file watcher.
- Resources path selection menu now supports sub-menus based on path hierarchy.
- Missing dependency error will now include type of the component that is missing the dependency.
- Game pad left stick will now also trigger focus when UI focus mode is set to navigation.
- Resource editor tooltips are now selectable to allow copy-pasting the script examples.
- It's now possible to import/export localization data into multiple spreadsheets.
- It's now possible using arbitrary enums to autocomplete parameters of custom commands. (guide)
- IDE extension now support comment folding.
- Spine extension now support multiple materials (submeshes).
- Improved layered actor auto render canvas evaluation.
Changed
- Minimum supported Unity version changed to 2019.4.24 due to breaking changes in TextMesh Pro package.
- "UniTask" third party library has been stripped and embedded inside Naninovel assembly. Upgrade script to v2 has been removed. UniTask v2 can now be used alongside default Naninovel installation.
- Service access methods in the
Engine
class have been changed:GetService
no longer accepts a predicate, useFindService
instead;GetAllServices
has been renamed toFindAllServices
. - Removed
Correct Render Aspect
option. The aspect will now be corrected by default. To modify the rendered area (viewport), use the addedRender Rectangle
property. (example)
Fixed
- Fixed author name missing in chat messages when display name is not set.
- Fixed resources assigned in editor menus and kept in
Resources
folder, but not under project provider root path not included to build. - Fixed exception being thrown when attempting to preview layered actor composition while not in prefab mode.
- Fixed exception when building with cloud build service with addressable system installed.
- Fixed addressable labels not automatically added on build.
- Fixed script parser not changing until recompile or editor restart.
- Fixed movie UI blinking white after fade when playing a video for the first time.
- Fixed non-generic
GetService
method not resolving services from interfaces. - Fixed auto play default input binding for gamepad fails to toggle the auto mode when using input system.
- Fixed quote un-/escaping in parameter values without whitespace.
- Fixed managed text records only applied to the first property in a type.
- Fixed TMPro font variants (weights) and sprites not working with text reveal effect.
- Fixed rotation applied to parent game objects in layered actors is ignored at runtime.
- Fixed entering skip mode prevents rollback to the command from which the skip started.
- Fixed editor resources lost when re-importing all assets or deleting "Library" folder.
- Fixed
@toast
command not included to localization documents. - Fixed appearance and id parameters of
@back
command not auto-completing for actors other than main (IDE extension). - Fixed engine pre- and post- initialization tasks not counting toward the reported initialization progress.
- Fixed text line incorrectly revealed when a ruby tag is placed at the end of a line.
- Fixed nullref when invoking
LayeredActorBehaviour.RebuildLayers()
at runtime. - Fixed movie volume not affected by master volume setting.
- Fixed minor alpha blending artifacts when performing scene transitions.
- Fixed actors appear darker then they should be in semi-transparent areas.
- Fixed nullref when using preview composition of layered actor while gizmos are disabled.
- Fixed layered actor size distorted when using RebuildLayers method at runtime.
- Fixed title script labels not played when wait for input is enabled.
- Fixed expression function exceptions suppressed and not logged correctly.
- Fixed incorrect actor texture scaling when transitioning between appearances with different sizes.
- Fixed text incorrectly revealed and input indicator missing after saving game.
- Fixed duplicate rollback step added after loading a saved game.
Naninovel 1.15
Compatibility
Supported Unity versions range: from 2019.4.22
to 2020.3
. Previous versions are not supported; compatibility issues with newer (major) versions will be addressed once they're out of beta.
Recommended Unity version: 2019.4.22
.
Upgrade Guide
When importing the package to a project with Naninovel version 1.13
or older first follow v1.14 release upgrade guide, then continue with the following instructions:
- Remove
Naninovel
folder from the project before importing the updated package. - In case you're using extension packages, update them using following links:
- In case using a custom main camera prefab, set the desired orthographic size on the prefab (it's no longer set automatically when a custom camera is assigned). Automatically set size is evaluated as follows:
reference resolution height / PPU / 2
; height is 1080 and PPU is 100 by default, so the default size is5.4
. - With the addition of match mode option for the background actors, revise how existing backgrounds should be matched to the screen ratio. In case using custom background actors, that aren't supposed to stretch to the entire screen, disable the matching by settings the property to "Disabled". In case using generic backgrounds, see scale to match example.
- Naninovel will no longer override UI render mode, so in case using custom or modified UIs and text printers, make sure
Render Mode
is set toScreen Space - Camera
andRender Camera
field is empty. (example) - If using new input system, update "Input System" package to version 1.1 via package manager.
- To use the newly added blur effect, add
Naninovel/Prefabs/FX/Blur.prefab
to the spawn resources (Naninovel -> Resources -> Spawn). - In case using custom UIs inherited from built-in components, revise the prefabs configuration.
- In case using poses, revise which modifications should be applied by enabling corresponding toggle boxes. (example)
- In case using speaker highlight feature, re-setup the config using character poses. (example)
- To use the newly added Toast UI, add
Naninovel/Prefabs/DefaultUI/ToastUI.prefab
to the UI resources (Naninovel -> Resources -> UI). - In case you've used quotes inside script expressions by double-escaping them, remove one escape symbol (single escape is enough now).
- In case using custom chat printer message prefab, setup the typing state (if necessary) using the newly added
OnType
Unity events. (example)
Remember to keep NaninovelData/Resources
folder and NaninovelData/EditorResources.asset
file when updating the engine to preserve project configuration and asset references.
Be aware, that in-game saves (slots in save/load menu, values in settings menu and global game state) created with previous versions could cause unexpected behavior when loaded with the updated version; when patching a shipped project with a new Naninovel version, make sure existing saves work as expected.
In case you're using VS Code IDE extension, check for updates to handle changes in the commands API.
Added
- Added spreadsheet extension allowing to export/import localizable project data (scenario, managed text and all the associated localization documents) to/from an
.xlsx
spreadsheet. (guide) - Added compatibility with Unity's new visual scripting solution. (guide)
- Added Spine character implementation. (guide)
- Added per-object blur FX. (guide)
- Added a toast UI and
@toast
command allowing to show general-purpose self-hiding popup notifications aka "toasts". (guide) - Added an option to provide custom actor sprite shader, allowing to apply various lighting and surface effects. (guide)
- Added
Match Mode
option to the background actor configuration allowing to specify in which mode the actor should be matched against the screen resolution. (guide) - Added
Reference PPU
property to the camera configuration allowing to control pixels per unit count when evaluating scene dimensions. - Added
Match Screen Width
option to the camera configuration; when enabled, relative (scene) position evaluation will use screen border as the origin; otherwise a rectangle based on the reference resolution and PPU is used. - Added
Arrange Range
property to character manager configuration, allowing to specify the range (relative to scene width) in which the characters are distributed by default. (example) - Added
Update Delay
property toReact To Aspect Ratio
component allowing to specify frequency of the updates. - Added
IsUnlocked()
built-in expression function, allowing to check wither an unlockable item with the specified ID is currently unlocked. - Added video character implementation.
- Added detailed error description when an internal package asset is failed to load.
- Added
Default Font
option to UI configuration, allowing to specify a font option to apply by default when the game is first started. - Added
Offset
property toRender Canvas
component, allowing to specify an offset for the rendered layered or Live2D actor. - Added
Default Base Reveal Speed
andDefault Base Auto Delay
properties to the text printers configuration, allowing to specify the related game settings values when the game is first started. (example) - Added
Voice Source
property to character configuration, allowing to assign a dedicated audio source to be used when playing voice clips associated with the character. (example) - Added source and target language specs to the generated localization documents.
- Added
do
parameter to@wait
command, allowing to execute specified commands after a delay. The wait command now also supportswait:false
mode. - Added
Stop Voice
property to text printer actor configuration; when enabled, the printer will stop any playing voices on each print command. - Added
Activate On Move
to swipe input configuration, allowing to register the swipes while fingers are moved (disabled by default). - Added default swipe bindings for open backlog and toggle UI inputs.
- Added
Touch Distance Limit
property to input configuration allowing to limit the touch distance when sampling input. - Added
On Clicked
for CG gallery slot prefab allowing to specify custom behavior when an unlocked gallery slot is clicked. - Added
Group By Category
option to resource provider configuration, allowing to group addressable resources by category. (example) - It's now possible to select a custom script parser in scripts configuration menu; to create a custom parser, implement
IScriptParser
interface. (example) - It's now possible to localize text printers and choice handlers in the same way as all the other resources.
- It's now possible to generate localization documents for all the available localization in the project at once by specifying path to the localization root directory (
Resources/Naninovel/Localization
by default). (example) - It's now possible to provide custom implementation for audio player used by the audio manger service (selected in audio config).
- It's now possible to control z-position of text printer actors with
pos
parameter of@printer
command. - It's now possible to group multiple CG images into one gallery slot. (guide)
- It's now possible to selectively apply modifications in poses.
- It's now possible to modify chat message typing state without C# with the new
OnType
events added to the message prefab. - It's now possible to prevent Naninovel from unloading Unity objects assigned as resources with
IResourceProviderManager.Hold
method. - It's no longer required to enable "keep original pivot" in diced sprite atlas.
- It's no longer required to double-escape quotes inside script expressions (single escape is enough).
- Optimized shader keyword usage: all the built-in shader keywords are now local and don't count to...
Naninovel 1.14
Compatibility
Supported Unity versions range: from 2019.4.7
to 2020.2
. Previous versions are not supported; compatibility issues with newer (major) versions will be addressed once they're out of beta.
Recommended Unity version: Latest 2019.4
LTS release.
Upgrade Guide
When importing the package to a project with Naninovel version 1.12
or older first follow v1.13 release upgrade guide, then continue with the following instructions:
- Remove
Naninovel
folder from the project before importing the updated package. - In case you're using extension packages, update them using following links:
Remember to keep NaninovelData/Resources
folder and NaninovelData/EditorResources.asset
file when updating the engine to preserve project configuration and asset references.
Be aware, that in-game saves (slots in save/load menu, values in settings menu and global game state) created with previous versions could cause unexpected behavior when loaded with the updated version; when patching a shipped project with a new Naninovel version, make sure existing saves work as expected.
In case you're using VS Code IDE extension, check for updates to handle changes in the commands API.
Added
- It's now possible to select voice language independently of the main localization in the game settings menu. (guide)
- Unused resources are now automatically released when navigating between naninovel scripts (via
@goto
command); state reset is no longer required. - Improved CG gallery resource management: only the items displayed on the current page will load; previously, all the CG items were preloaded on opening the gallery, which caused freeze with large amounts of CG resources.
- IDE extension now provides completion for expression functions and custom variables.
- Added an option to affect all camera components (via
*
symbol) fortoggle
andset
parameters of@camera
command. - Added script graph synopsis: first comment lines in the naninovel scripts will now be added to the script nodes, representing scenario synopsis. Can be disabled via
Show Synopsis
property in the script configuration. (example) - Added an option to specify non-uniform (x,y,z) scale with
@animate
command.
Changed
Reset On Goto
(state configuration) is now disabled by default for new projects. Consider disabling the option for existing projects as well, as the unused resources are now automatically released when navigating between naninovel scripts and state reset is no longer required. Don't forget to removereset
parameters in the@goto
commands after disabling the option.
Fixed
- Fixed state manager initializing sooner then expected.
- Fixed Rollback UI saving visibility state by default, which cause inconsistent behavior of the UI when rolling back.
- Fixed scene transitions disabling skip and auto play modes.
- Fixed
@despawn
command not printing script position on warnings. - Fixed IDE extension not recognizing script expressions inside generic text lines, which contains inlined commands.
- Fixed CG gallery not updating item unlock status while the UI is opened.
- Fixed depth of field effect flickering on despawn.
- Fixed some spawned FX (eg, dof, rain, snow, sun shafts) gradually revealing after loading a game, while they're expected to be fully revealed.
- Fixed state rollback stack reset on goto preventing from rolling back to the previously played script.
- Fixed UI resources referenced in script commands using prefab names instead of resource names.
- Fixed incorrect color of the comment lines in the visual script editor when using dark editor scheme.
- Fixed nullref exceptions when editing TMPro printer prefabs in play mode.
- Fixed script lines searcher navigation in Unity 2020.2.
- Fixed look camera mode not working correctly when using camera offset.
- Fixed "shake" FX and
@animation
command freeze editor when running in a loop. - Fixed numeric values parsing in IDE extension on non-English OS locales.
Naninovel 1.13
Compatibility
Supported Unity versions range: from 2019.4.7
to 2020.2
. Previous versions are not supported; compatibility issues with newer (major) versions will be addressed once they're out of beta.
Recommended Unity version: Latest 2019.4
LTS release.
Upgrade Guide
When importing the package to a project with Naninovel version 1.11
or older first follow v1.12 release upgrade guide, then continue with the following instructions:
- Remove
Naninovel
folder from the project before importing the updated package. - In case you're using extension packages, update them using following links:
- In case you're using a custom "ChatMessage" prefab for built-in chat printer, assign
OnMessageTextChanged
Unity event for the prefab. (example) - In case you're using a custom
ITipsUI
with built-in implementation, assignItems Scroll Rect
property. (example) - In case you're using a custom "SaveLoadSlot" prefab, assign
Empty Slot Thumbnail
property. - In case you've removed
com.unity.textmeshpro
package (added by default when creating a new Unity project), add it back, as Naninovel will no longer compile without the package. - In case you're using custom metadata types, remove the attribute from the implementations and inherit them from
CustomMetadata<>
. Be aware, that values of the custom metadata properties will be lost after the changes, so make sure to backup them. - In case using a custom actor implementation, apply
ActorResources
attribute and revise how the resources are loaded: if the implementation uses multiple resources, add the attribute and set second argument true, otherwise change path of the loaded single resource to be equal to the actor ID. - In case using custom preloadable commands or actor implementations with overridden
Hold/ReleaseResources
methods, change the signature of the hold and release methods to comply with the new interface. (example) - In case you've used a sprite characters without appearances to represent a narrator, switch to
NarratorCharacter
implementation (sprite implementations will now show a special texture when an appearance is missing). - In case using any custom types under a non-predefined assembly (via .asmdef files) to extend or override engine behavior (eg, actor implementations, serialization handlers, custom configurations, etc), add the assembly name to the
Type Assemblies
list property found in the engine configuration menu. - In case using custom configurations, apply
EditInProjectSettings
attribute if you need the associated project settings menu. - Run
Naninovel -> Upgrade -> v1.12 to v.13
upgrade script.
Remember to keep NaninovelData/Resources
folder and NaninovelData/EditorResources.asset
file when updating the engine to preserve project configuration and asset references.
Be aware, that in-game saves (slots in save/load menu, values in settings menu and global game state) created with previous versions could cause unexpected behavior when loaded with the updated version; when patching a shipped project with a new Naninovel version, make sure existing saves work as expected.
In case you're using VS Code IDE extension, check for updates to handle changes in the commands API.
Added
- IDE extension for VS Code is now available. (guide)
- It's now possible to render character and background actors to render texture assets assigned in configuration; supported by all the implementations, except generic. (guide)
- It's now possible to execute commands via title script before starting a new game, exiting game or loading a game with
OnNewGame
,OnExit
andOnLoad
labels. (guide) - It's now possible to associate printed text with tips to auto unlock them and show tips UI when the associated text clicked. (guide)
- It's now possible to specify y and z coordinates with
from
andto
parameters of@slide
command. - It's now possible to disable opacity hover of grid slots (CG, save-load, etc), by setting
Hover Opacity
to zero. - It's now possible to assign asset references to custom metadata.
- It's now possible to assign script expression to display name. (guide)
- It's now possible to override built-in configuration editors (Naninovel project settings menus). (guide)
- Improved script line searcher styling for better visibility when using dark Unity editor skin.
- Improved engine initialization and localization change times by using a stripped version of the domain types.
- Improved performance when state rollback is disabled (controlled via state configuration menu). The engine will no longer perform full serialization on each played command, which was previously required to save the game; this significantly reduce GC allocations and saves CPU time when playing scripts with rollback disabled.
- Added support for Unity 2020.2.
- Added "DicedSpriteBackground" background actor implementation; configured and used in the same way as diced characters.
- Added support for direct interaction (eg, raycasting) with the models of Live2D character implementation.
- Added
ActorResources
attribute, allowing to specify resource type constraint and whether an actor implementation is allowed to have multiple resources assigned in configuration menu. - Added
NarratorCharacter
implementation for character actors that doesn't have any presence on scene and can be used to represent a narrator (author of the printed text messages). - Added
EditInProjectSettings
attribute; when the attribute is applied to a configuration implementation, the associated project settings editor menu will be added. - Added
PrintFrameDelay
property to text printer metadata allowing to specify number of frames to wait before completing@print
commands; a value greater than zero is required to make the printed text visible while in skip mode. - Added
Type Assemblies
list property to the engine configuration menu allowing to specify which assemblies will be scanned when looking for actor implementations, serialization handlers, managed text, etc. - Added
OnMessageTextChanged
Unity event toChatMessage
component, allowing to use it with any types of text. - Added
AudioListener
property getter toIAudioManager
interface, allowing to access audio listener component currently used by the engine. - Added managed text records for the graphic options.
- Added
On Started Speaking
andOn Finished Speaking
events for layered character behavior allowing to set up lip sync. - Added a
Font Options
list property in the UI configuration allowing to specify which fonts should be available for the player to choose from in the game settings UI. (example) - Added default option of the font dropdown setting to the auto generated "DefaultUI" managed text document.
- Added an option to specify file extension of the video assets (movies, video backgrounds) streamed under WebGL. (example)
- Added an option to prevent specific printers from adding messages to the backlog. (example)
- Added an option for a text printer to always split messages added to backlog; enabled by default for the built-in chat printer.
- Added extension methods for custom variable manager allowing to get/set variables with float, int and bool value types.
- Added a default actor appearance shown when referencing a non-existing actor via naninovel scripts.
- Added
Render Canvas
component allowing to specify custom render canvas size for layered actors. - Added concurrent invocations support for
RuntimeInitializer.InitializeAsync()
method. - Added
@sfxFast
command allowing to play transient SFX audio clips (eg, viaPlay Script
component in reaction to UI events); the command also allows playing the same clip concurrently multiple times withadditive
parameter. - Added
Scene Independent
option to the engine configuration menu; when disabled, the engine objects will become part of the scene the engine was initialized at and will be destroyed when the scene is unloaded. - Added
Dynamic Load
property to the CG gallery UI; when disabled, all the CG resources will be preloaded on initialization instead of loading only the resources for the current CG gallery page.
Changed
- TMPro (
com.unity.textmeshpro
) package is now a require...
Naninovel 1.12
Compatibility
Supported Unity versions range: from 2019.4.7
to 2020.1
. Previous versions are not supported; compatibility issues with newer (major) versions will be addressed once they're out of beta.
Recommended Unity version: Latest 2019.4
LTS release.
Upgrade Guide
When importing the package to a project with Naninovel version 1.10
or older first follow v1.11 release upgrade guide, then continue with the following instructions:
- Remove
Naninovel
folder from the project before importing the updated package. - In case you're using extension packages, update them using following links:
- Update TextMeshPro (
com.unity.textmeshpro
) to the verified version via package manager. - In case using SpriteDicing extension, update it and regenerate the atlases (make sure to enable "Keep Original Pivot" in atlas config).
Remember to keep NaninovelData/Resources
folder and NaninovelData/EditorResources.asset
file when updating the engine to preserve project configuration and asset references.
Be aware, that in-game saves (slots in save/load menu, values in settings menu and global game state) created with previous versions could cause unexpected behavior when loaded with the updated version; when patching a shipped project with a new Naninovel version, make sure existing saves work as expected.
In case you're using Atom IDE extension, check for updates to handle changes in the commands API. Should the extension fail to work after the update, try manually deleting the extension directory and installing it again; re-installing Atom itself could also resolve the issue.
Added
- Added an option in UI configuration menu to disable override of the managed UIs object layer.
- Added
Render Material
property toLayered Actor Behavior
component, allowing to use a single custom material when rendering the layers. - Added
Reversed
property toLayered Actor Behavior
component, allowing to render the layers in reversed order. - Added an upgrade script for UniTask v2.
- Added
IInputIndicator
interface allowing to provide an arbitrary "waiting for input indicator" object implementation. - Added dark skin for visual script editor; enabled when Unity editor is using "Professional" theme.
- It's now possible to inject custom data to actors metadata.
- It's now possible to copy and paste lines in visual script editor.
- It's now possible to override all the public and protected members of the built-in engine service implementations.
- It's now possible to rewind by clicking a line in visual script editor, while holding
Shift
key (can be configured in script configuration). - It's now possible to use any renderers derived from
UnityEngine.Renderer
as layers in layered actor implementations. - SunShafts, Rain and Snow built-in FX now have a proper fade-out animation when despawned.
Changed
- Due to
com.unity.textmeshpro
verified status in Unity 2019.4.7 release has been changed to a newer version, which has breaking changes, minimum Unity version supported by Naninovel has also changed to 2019.4.7. - When
Render Material
is not assigned, layered actor behavior will now use material from layer renderer component instead of a single predefined material; this allows assigning different materials for specific layers.
Fixed
- Fixed state manager loading settings and global state later than expected.
- Fixed an unnecessary error logged when attempting to remove a non-managed UI.
- Fixed input indicator positioned incorrectly when reveal speed is set to max value (instant).
- Fixed custom dissolve appearance transitions failing to rollback properly.
- Fixed built-in searcher scripts conflicting with
com.unity.searcher
package. - Fixed layered actors inconsistent render state when rolling back during appearance transition.
- Fixed TMPro text printers excessive material assignments.
- Fixed list record in editor menus deleted when "Delete" key is pressed while editing record's text field.
Naninovel 1.11
Compatibility
Supported Unity versions range: from 2019.3
to 2020.1
. Previous versions are not supported; compatibility issues with newer (major) versions will be addressed once they're out of beta.
Recommended Unity version: Latest 2019.4
LTS release.
Upgrade Guide
When importing the package to a project with Naninovel version 1.9.8-beta
or older first follow v1.10 release upgrade guide, then continue with the following instructions:
- Remove
Naninovel
folder from the project before importing the updated package. - In case you're using extension packages, update them using following links:
- In case using custom text printers, add continue input triggers to the new
Continue Input Triggers
list property. - In case using Naninovel's async API in custom scripts, resolve ambiguity of
cancellationToken
arguments by removingSystem.Threading
usage or specifying full name for the argument:Naninovel.CancellationToken
; example video.
Remember to keep NaninovelData/Resources
folder and NaninovelData/EditorResources.asset
file when updating the engine to preserve project configuration and asset references.
Be aware, that in-game saves (slots in save/load menu, values in settings menu and global game state) created with previous versions could cause unexpected behavior when loaded with the updated version; when patching a shipped project with a new Naninovel version, make sure existing saves work as expected.
In case you're using Atom IDE extension, check for updates to handle changes in the commands API. Should the extension fail to work after the update, try manually deleting the extension directory and installing it again; re-installing Atom itself could also resolve the issue.
Added
- Added support for Unity 2020.1.
- Added
Animated
property to layered actor behavior component; when enabled, the actor will be rendered each frame allowing to animate the layers or implement other dynamic behavior. - Added
Goto.DontReset
attribute; when applied to an engine service implementation, the service won't be reset by default while executing@goto
command. - Added support for right to left (arabic) text reveal effect (TMPro printers only).
- Added
Font Change Configuration
property to the managed UI components, allowing to configure which text components should be affected by font and text size settings (set by player via in-game settings menu); it's also possible to specify font sizes for individual text elements. - Added an utility to generate metadata for custom commands allowing to support them in IDE extensions (eg, Atom).
- Added
play
parameter to@choice
command, allowing to control whether the script should continue playing after the choice is picked when neithergoto
norgosub
parameters are specified (enabled by default). - Added an auto voice mode to associate voice clips by content instead of command playback spot.
- Added
only
parameter to@resetState
command, allowing to reset only the provided services. - Added
Complete On Continue
property to script player configuration, allowing to control whether to instantly complete blocking (wait:true
) commands performed over time (eg, animations, hide/reveal, tint changes, etc) whenContinue
input is activated; enabled by default. - It's now possible to rollback via backlog UI by clicking a button next to backlog message; the feature can be disabled via
Allow Rollback
property in backlog UI. - It's now possible to disable replay voice feature in printer backlog UI via
Allow Replay Voice
property. - It's now possible to mute/un-mute individual input samplers with
set
parameter of@processInput
command; eg:@processInput set:Rollback.false,Pause.false,Continue.true
. - It's no longer required to restart the game when setting default font type or size in game settings menu.
- It's now possible to setup multiple continue input triggers for a text printer.
- It's now possible to control voice volume of specific characters.
- It's now possible to override built-in commands.
- Improved
@resetState
command performance when a service filter is used.
Changed
- Blocking (
wait:true
) commands performed over time (eg, animations, hide/reveal, tint changes, etc) are now instantly completed whenContinue
input is activated; can be disabled in script player configuration viaComplete On Continue
property. - Changed type of
cancellationToken
arguments used in async Naninovel's API fromSystem.Threading.CancellationToken
toNaninovel.CancellationToken
. - Anchor for
ButtonArea
built-in choice handler content is now centered to prevent buttons from moving when changing display aspect ratio. - Script will now automatically continue playing by default when
do
parameter is assigned in@choice
command, unlessplay
parameter is set to false. - Text font size (in game settings menu) is now a dropdown instead of slider.
- Text font and size (in game settings menu) no longer affect all the text elements by default; individual text elements of the UI (including custom UIs), that should be affected by the setting can now be specified via
Font Change Configuration
property. Continue Input Trigger
property of text printers has been replaced withContinue Input Triggers
(list) to allow adding multiple objects.- Chat text printer no longer reset by default (only affect new projects).
- Changed unloaded resource object field visual style to be more similar to normal object field.
- Third party NCalc library has been updated to the latest version.
Fixed
- Fixed layered actors sometimes not rendered properly when scaled.
- Fixed some resources unloaded while being used.
- Fixed bubble printers have incorrect position when display aspect ratio changes.
- Fixed
reset
parameter of@goto
command not working with types outside of "Naninovel" namespace. - Fixed
@resetState
command not resettingICustomVariableManager
service when no parameters are specified. - Fixed built-in TMPro printers using incorrect font shader for author name text labels.
- Fixed author avatar images inside TMPro printers failing to crossfade correctly.
- Fixed camera rotation over negative values.
- Fixed some text printer and choice handler resources not disposed correctly.
- Fixed default voice volume property in audio config ignored when starting a new game.
- Fixed missing ref exception sometimes throwing in editor when closing script graph window.
- Fixed skippable wait timer (eg,
@wait i3
) not behaving correctly when used before or after a generic text line. - Fixed script localization failing when localized lines with equal content exist.
- Fixed backlog messages ignoring authors when using chat printer.