Horror Game PSD UI Kit

About Horror Game PSD UI Kit – Unity 2D & UI Pack

Horror Game PSD UI Kit Unity Asset Overview

Building atmospheric interface elements for horror titles is surprisingly tricky. You aren't just placing flat buttons on a screen; you are attempting to make the user interface feel like an extension of a decay-ridden world. Distressed textures, grime, blood stains, and aged metallic frames often require complex layering and fine-tuned visual hierarchy. The Horror Game PSD UI Kit tackles this production challenge head-on by providing full source Photoshop (.PSD) documents alongside pre-sliced texture assets tailored for Unity’s uGUI Canvas system.

In my experience shipping dark atmospheric projects, UI artists and engineers spend far too much time bouncing back and forth between image editors and Unity to re-export trimmed assets, adjust border slicings, and fix scaling issues. This asset establishes a structured foundation: raw PSD source files with organized layer groups on one side, and isolated, high-density graphics ready for Unity's Sprite Atlas workflow on the other. Rather than locking you into a rigid layout, it gives you the raw graphical components to build menus, HUDs, inventory grids, and dialogue boxes that fit your game's unique technical constraints.

Core Technical Features & Highlights

From a technical production perspective, graphic kits need to be flexible and light on draw calls. Here is an overview of what this UI package brings to the table:

Asset Breakdown

Performance & Canvas Batching

Honestly, heavy visual themes with detailed grime textures run the risk of generating massive draw calls if not managed correctly. Because this pack breaks down visual elements into separate overlay textures (grime overlays, bevel borders, dark panel bases), putting these directly onto a Unity Canvas without consolidation will break batching immediately. To maintain 60 FPS across desktop and mobile, these exported PNGs must be combined into a single Sprite Atlas asset within Unity to allow UI batching to bundle multiple graphic elements into single draw calls.

Ideal Use Cases & Game Genres

While the aesthetic heavily leans toward traditional horror, the dark, distressed visual style adapts well across several specific genres:

Quick-Start Unity Setup & Integration Guide

Integrating graphics from external PSD exports into a production-ready Unity Canvas requires a few deliberate steps to ensure proper scaling and optimal batching. Here is how I usually set up this asset in new project iterations:

Step 1: Import and Texture Configuration

Import your exported PNG assets into your project's texture directory. Select all sliced UI textures in the Project View and update their settings in the Inspector:

Step 2: Create a Unified Sprite Atlas

Right-click in your Project folder and navigate to Create -> 2D -> Sprite Atlas. Name it Atlas_HorrorUI. Drag the folder containing your sliced horror UI graphics into the Objects for Packing list inside the Inspector. Click Pack Preview to verify that all UI elements share a single texture page, which keeps draw calls minimal during runtime menu rendering.

Step 3: Runtime Menu Transition Scripting

When displaying complex UI panels with multiple canvas renderers, toggling GameObject.SetActive(false) can cause layout re-building hitches. Here is a lightweight C# script to handle UI panel state transitions smoothly using a CanvasGroup, complete with audio trigger hooks for interactive sound effects:

using System.Collections;
using UnityEngine;
using UnityEngine.UI;

[RequireComponent(typeof(CanvasGroup))]
public class HorrorMenuController : MonoBehaviour
{
    [Header("UI State Settings")]
    [SerializeField] private CanvasGroup menuCanvasGroup;
    [SerializeField] private float fadeDuration = 0.35f;

    [Header("Audio Feedback")]
    [SerializeField] private AudioSource audioSource;
    [SerializeField] private AudioClip hoverSFX;
    [SerializeField] private AudioClip clickSFX;

    private Coroutine activeFadeRoutine;

    private void Awake()
    {
        if (menuCanvasGroup == null)
            menuCanvasGroup = GetComponent<CanvasGroup>();
    }

    public void OpenPanel()
    {
        ToggleState(true);
    }

    public void ClosePanel()
    {
        ToggleState(false);
    }

    private void ToggleState(bool show)
    {
        if (activeFadeRoutine != null)
            StopCoroutine(activeFadeRoutine);

        activeFadeRoutine = StartCoroutine(FadeCanvas(show ? 1f : 0f, show));
    }

    private IEnumerator FadeCanvas(float targetAlpha, bool isInteractable)
    {
        float startAlpha = menuCanvasGroup.alpha;
        float elapsed = 0f;

        while (elapsed < fadeDuration)
        {
            elapsed += Time.unscaledDeltaTime;
            menuCanvasGroup.alpha = Mathf.Lerp(startAlpha, targetAlpha, elapsed / fadeDuration);
            yield return null;
        }

        menuCanvasGroup.alpha = targetAlpha;
        menuCanvasGroup.interactable = isInteractable;
        menuCanvasGroup.blocksRaycasts = isInteractable;
    }

    public void OnPointerHover()
    {
        if (audioSource && hoverSFX)
            audioSource.PlayOneShot(hoverSFX);
    }

    public void OnPointerClick()
    {
        if (audioSource && clickSFX)
            audioSource.PlayOneShot(clickSFX);
    }
}

Pros & Cons Assessment

Pros

Cons & Considerations

Asset Details & Specifications

Category2D / GUI
Latest Versionv1.0
File Size87.37 MB
Added to PlatformFebruary 10, 2026
Views13 views
Downloads1 downloads
Favourites0 favourites
Issue with Package?Report Broken Link →

Developers Who Downloaded This Also Downloaded

Related Unity 2D Assets