Smart Gallery

Documentation for Smart Gallery v1.0


Thanks for using Smart Gallery! Don't forget to leave a review on the store page if you liked it, this helps us a lot!


Smart Gallery is an elegant, flexible and efficient solution for displaying image, video and audio galleries for your project.

Key features:

Render Pipelines: Built-in RP, URP, HDRP, Custom RP.

Input Systems: Old, New, Both.

Platforms: PC, Mac, iOS, Android, UWP, WebGL.

Other platforms have not been tested, but most likely Smart Gallery will work well.

Getting Started

Select the GameObject that should open the gallery.

Add the appropriate Loader component to it (UI Loader for UI elements, Collider Loader for objects in the scene, or Loader for other objects). If you used a Loader component, you need to call the Show method.

Specify the Container where you want to display the gallery and select Viewer Prefab.

Select whether you want to show an existing gallery or a set of frames.

To create a gallery select Assets / Create / Smart Gallery / Gallery.

Add frames, select their type and fill in the properties.

Structure of Asset


Loaders trigger the viewing of a gallery or set of frames.

There are three types of loaders:

In loader you need to specify the Container where the gallery will be displayed, the index of the starting frame (from 0 to Number - 1), and:


Contains information about the frame.

Each frame has a content type and properties that depend on the content type and modules used.

Select the content type of the frame and fill in the properties.

Only properties containing reference to the content to be displayed (like Texture, Audio Clip, Video Clip, etc.) are mandatory. Other properties are optional.

When you change the frame type or Viewer Prefab, all module properties save the values in a temporary variable. This is so that you don't lose the values if you accidentally change the frame type or Viewer Prefab. But this can create unwanted references. To clear them click "Remove unused properties".

Note: only module properties (like Title, Thumbnail, etc.) are saved, not content type properties (like Texture, Audio Clip, Video Clip, etc.).


A gallery is a set of frames, with a selected Viewer, that can be displayed from any loader. This allows you to populate the frames once and reuse the gallery in any places you want.

To create a gallery select Assets / Create / Smart Gallery / Gallery, select Viewer Prefab, add frames and fill in the properties.

Content Types


Used to display the texture located in the project.

Required property: Texture.


Used to play Audio Clip located in the project.

Required property: Audio Clip.

Optional properties:


Used to play the Video Clip located in the project.

Required property: Video Clip.

Optional properties:

Important: VideoClips aren’t supported on WebGL. Use Remote Video instead.

UI Prefab

Used to display a prefab containing UI elements. The contents of the prefab should be stretched in width and height (Anchor Min - {0, 0}, Max - {1, 1}), and can be interactive.

Required property: Prefab.

Remote Texture

Used to load texture from URL, Resources, Streaming Assets or Persistent Data Path.

Source - where the texture will be loaded from:

For Source - URL you will need to specify the URL of the texture.

For other Sources, you will need to specify the path inside the corresponding folder. For convenience, there is an overview button to the right of the input field.

Important: The path in the Resources folder must not have an extension. For example, for the file "Photo.png", you need to specify "Photo".

Remote Video

Used to load a video from a URL via a GET request.

Required property: Url.

Optional properties:


Used to display YouTube videos.

Youtube Player package is required in the project:

Important: Youtube Player package does not support WebGL because CORS.

Preparing to use:

After that you can select the YouTube frame type.

Specify the URL in the format: or


Viewer is the prefab that will be used to display the gallery, containing all required modules.

Viewer can contain modules in any number and combination.


The modules are located in "Assets / Plugins / Infinity Code / Smart Gallery / Modules" folder.

There are three types of modules:

For instructions on how to use a module, see the module description.


Automatically moves to the next frame after the specified time interval. The current time is displayed by a bar.

To use the module, create an Autoplay prefab instance inside Viewer Prefab.


Adjusts the content size to the screen size.

To use the module, add the Autosize component to the Viewer prefab.


A background image module that blocks interaction with elements outside the Viewer.

To use the module, create an instance of Background prefab inside Viewer Prefab.

Close Button

Closes the gallery view when a UI button is clicked.

To use the module, create an instance of Close Button prefab inside Viewer Prefab.

Content Container

A module for displaying the content of a frame.

To use the module, create an instance of Content Container prefab inside Viewer Prefab.

Frame Counter

Displays the current frame number and the total number of frames in the gallery.

To use the module, create an instance of Frame Counter prefab inside Viewer Prefab.

Frame Indicator

Displays the number of frames using bullets, highlighting the active frame with a different colour. Click on a bullet to jump to the corresponding frame.

To use the module, create an instance of Frame Indicator prefab inside Viewer Prefab.

Fame Switcher Buttons

Buttons to switch to the next and previous frames, on the sides of the content.

To use the module, create an instance of Frame Switcher Buttons prefab inside Viewer Prefab.

Keyboard Input

Provides control of the Viewer using the keyboard.


To use the module add KeyboardInput component to Viewer prefab.

Loading Spinner

Displays loading animation for content that takes time to load, such as Remote Texture, Remote Video, YouTube.

To use the module, create an instance of Loading Spinner prefab inside Viewer Prefab.

Text Bridge

Creates a frame property and displays it in the Text component.

Add a Text Bridge component to the desired place inside the Viewer prefab (usually a GameObject containing a Text component). Specify a field name and a reference to the Text component. If necessary, you can specify whether the field is multi-line, and its prefix and suffix.

When you select this Viewer prefab in the gallery, the field with the specified name will be displayed in the frame settings.


Displays previews for frames by highlighting the active frame with a frame. Click a preview to jump to the corresponding frame.

Adds the Thumbnail property to frames. For the frame type Texture, this property is optional, and when omitted, the main texture will be taken. For other frame types, if the property is not populated, the default preview will be shown.

You can specify a general default preview in the module, as well as a default preview for each frame type separately.

To use the module, create an instance of Horizontal Thumbnails or Vertical Thumbnails prefab inside Viewer Prefab.


Displays the title of the current frame.

Adds an optional Title property to frames.

To use the module, create an instance of Title prefab inside Viewer Prefab.


Module container for modules located in titlebar, such as Title, Close Button, Frame Counter.

To use the module, create an instance of Titlebar prefab inside Viewer Prefab.

Touch Input

Provides control of Viewer, using mouse and touches.

To use the module add TouchInput component to Viewer prefab.

Video Player

The module can work with local or remote video or audio content, and YouTube content.

It provides display of total and current video time, shows a progress bar, pause and continue buttons. Clicking on the view progress bar moves playback to the progress bar under the cursor.

To use the module, create an instance of Player prefab inside Viewer Prefab.

Zoom And Scroll

Provides the ability to zoom in on content by double-clicking on it, or by using the mouse wheel. When content is zoomed in, you can drag the content to view the desired area, but you cannot change frames using the frame change gesture. To be able to change frames again, zoom out using double-click or the mouse wheel.

To use the module add the ZoomAndScroll component to the Viewer prefab.


Transitions are modules that make the transition between frames.

The following transitions are present:

Viewer can have only one transition at a time.

If it had no transitions, Immediate will be added.

If it had more than one transition, all transitions after the first one will be disabled.


For more information about all public classes, methods, and variables, see API Reference.

Online version:

The local version of API Reference is located in «Plugins / Infinity Code / Smart Gallery / Documentation / API Reference (Do not unpack in assets folder).zip». Important: do not unpack the archive into Assets folder of your project.


TextMesh Pro

By default, all modules use the Text component to display text. If you want to use TextMesh Pro to display text, you need to do the following:

TextMesh Pro Modules package contains modules:

Youtube Player

Used to display YouTube videos.

Important: Youtube Player package does not support WebGL because CORS.

Preparing to use:

After that you can select the YouTube frame type.

Specify the URL in the format: or

Updating Asset

We send to Unity Asset Store only stable versions.

Smart Gallery has a built-in update system, using which you can download the latest versions of Smart Gallery and get early access to all versions and updates.

Important: Always back up the project before updating assets.

Select "Tools / Smart Gallery / Check Updates" or "Smart Gallery / Help / Check Updates", to open the updater window. Enter your Invoice Number or Order Number, select the update channel and click "Check New Versions".

You can find your Invoice Number in Unity Asset Store order confirmation email, or on the orders page in Unity Asset Store:

If more than 10 updates were released in the selected channel from the current version, only the last 10 updates will be shown.

If updates are available, you can read the list of changes and download the update.

If you have problems installing the update, then:

  1. Remove "Plugins / Infinity Code / Smart Gallery" folder.
  2. Import the new version of Smart Gallery into the project.

If you want to return to the previous version of Smart Gallery, then select the channel "Stable Previous". Using this channel, you can get 10 previous stable versions.

Smart Gallery automatically checks for updates every 24 hours. If the new version is available, you will see an icon in the Actions. Clicking on this action will open the updater window.

Automatic update check does not require an Invoice Number, and works on a previously selected update channel. If you did not select the update channel, then only stable versions will be checked.

Other Infinity Code assets

Huge Texture

Huge Texture

Huge Texture allows you to import and use textures larger than 8192x8192px.

How it works: When importing a texture, Huge Texture splits the texture into pages and saves it as a Texture Array. Texture Array is combined on the shader side, which does not create extra draw calls and has almost no effect on performance.



Mesh to Terrain

Mesh to Terrain

Mesh to Terrain is a tool for easily and quickly converting a 3D terrain model created in 3ds Max, Terragen or any other editor to Unity Terrains. Mesh to Terrain can convert textures to SplatPrototypes (Terrain Layers), generate terrain from several models and split the model into several terrains.


Online Maps

Online Maps

Online Maps is a universal multi-platform mapping solution for your 2D, 3D, AR / VR and mobile applications and games.

Fully customizable, incredibly easy to learn and use, and at the same time is one of the most powerful and flexible solutions in the industry.

Supports a huge number of services for any mapping needs, and has integration with the best Asset Store assets.

The package contains the complete source code without dependencies, and if you want to add or change some feature, you can easily do it.

Don't have programming experience or don't know C# - Online Maps supports visual scripting using Bolt and Playmaker.

All the features to create any map in Unity in one asset.


Project Context Actions

Project Context Actions

Project Context Actions is a standalone free toolkit from Ultimate Editor Enhancer asset that speeds up work with the Project window by adding contextual actions based on item type.

Supports one-column and two-column layouts.

Context actions are displayed when you hover over a row or cell in the project that matches certain criteria.

List of actions:

Real World Terrain

Real World Terrain

Real World Terrain is a tool for automatically creating high-quality terrains, meshes, Gaia stamps and RAW files based on real-world data with global coverage. Incredibly fast and easy to use, and allows you to create high-quality terrains in a couple of clicks. In addition, Real World Terrain can create buildings, roads, trees, grass, and rivers based on Open Street Map data. Real World Terrain is incredibly powerful and flexible. It has a powerful Editor API to automate the generation of terrains, and Runtime API positioning objects by coordinates, etc. Real World Terrain has integration with the best assets of the Asset Store, which gives almost unlimited possibilities in the generation of terrains.


Run Desired Scene

Run Desired Scene

Run Desired Scene is a very powerful and easy to use tool that allows you to start playing from any scene without opening it. After exiting play mode, you will return to the scenes open for editing.


Terrain Quality Manager

Terrain Quality Manager

Terrain Quality Manager allows you to change the resolution of Heightmap, Detailmap, Alphamap and Basemap, without losing data. If you need to increase the quality of terrain, or optimize terrain for better performance, with this tool you can do it.


Tiny Terrain

Tiny Terrain

Tiny Terrain is a lossy Terrain Data compression technology for Unity Terrain Engine, which allows you to reduce the size of the data that Terrain takes in the project many times and significantly reduce the size of your application. You pay a little CPU time and additional memory usage, but save tens and hundreds of megabytes for each Terrain in the project. Even though the compression is lossy, in most cases you won't see any visual difference at all. A very high compression ratio is achieved due to the author's data preparation algorithms and then compression using Brotli. Even if your build or AssetBundle is already compressed using LZ4, LZ4HC or LZMA, Tiny Terrain will be able to reduce its size. Of course the difference in size won't be as huge as with the uncompressed data, but it's still pretty big.

The asset has highly optimized code using direct memory access, which allows for fast compression and decompression, and minimizes additional memory usage. On average, one Terrain is loaded in about 1 second. Tiny Terrain is not a 3rd party Terrain Engine, and you can use Unity Terrain API and any terrain tools you like, such as Real World Terrain, Gaia, Vegetation Studio, etc.

Using Tiny Terrain is very easy, and anyone can do it, even if it is their first day using Unity. Just add Tiny Terrain Loader component to Terrain and click Compress. If you are an advanced user or programmer, Tiny Terrain has events and API that will help you take full control of the loading process.


Platforms: The asset was tested on PC, Mac, Android, iOS, WebGL. The rest of the platforms have not been tested, but the asset should also work well on them.

Tree Tool

Tree Tool

Tree Tool allows you to manage each tree individually.

Using this tool, you can perform the following actions on trees:


In addition, the tool can perform the following mass actions:


Tree Tool is compatible with all assets that create trees for Terrain.

Ultimate Editor Enhancer

Ultimate Editor Enhancer

Ultimate Editor Enhancer (ex uContext Pro) is productivity PowerPack that take your workflow in Unity Editor to a next level, simplifies working with content, adds new features to the editor, corrects and improves the editor’s built-in behaviors.

Dramatically improves Hierarchy, Inspector, Scene View and the editor itself.

Adds tools for quick navigation, creation and manipulation of objects.


Key Features:

List of tools:




uPano (Unity Panoramic Framework) is a universal solution for displaying dynamic and static panoramas, and creating virtual tours. uPano is very easy to learn and use, and is great for people who do not have programming experience. Visual Tour Maker lets you create virtual tours in minutes. In most usage scenarios, you can make interactive panoramas without creating your own scripts. If you have some very specific purpose, uPano has a powerful and easy-to-use API that will allow you to implement any behavior. Most of the existing types of panoramas are supported: spherical, cylindrical, cubic panoramas on single or six images, cubemap.

Supported platforms: Standalone, iOS, Android (including Google VR), Universal Windows Platform, WebGL. Other platforms have not been tested, but most likely uPano will work well.

Additional features:

Value Observer

Value Observer

Value Observer is an editor-friendly implementation of the Observer pattern.

Contains: ValueObserver<T> - observes the value change and notifies listeners. Allows to validate the value change. LinkedObserver<T> - connects observer located in another component and allows to use it as a field of this class. LinkedValue<T> - connects any Serialized Property of any other component or Scriptable Object and allows it to be used as a field of this class. LinkedMethod<TResult> - connects any method that returns a value. Editor-friendly equivalent of Func. Supports up to 10 parameters.


Final words

We sincerely hope that you enjoy using Smart Gallery. If you have any questions or problems, please contact us. We will try to help you as quickly as possible.

Please don't forget to leave a review on the store page if you liked Smart Gallery, this helps us a lot! It is very important for us to have feedback to make our assets better.


Product page: Asset Store: Support: Forum: YouTube: Vimeo: Twitter: