Skip to content

WalletConnect/WalletConnectUnity

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

Deprecated - WalletConnectUnity

WalletConnect Inc is now Reown. As part of this transition, we are deprecating a number of repositories/packages across our supported platforms, and transitioning to their equivalents published under the Reown organization.

This repository is now considered deprecated and will reach End-of-Life on February 17th 2025. For more details, including migration guides please see: https://docs.reown.com/advanced/walletconnect-deprecations

AppKit

Reown AppKit offers a feature-rich and user-friendly solution for integrating onchain Unity apps and games.

WalletConnect Modal Reown AppKit
WalletConnect โœ… โœ…
Network Switching โŒ โœ…
EVM Interaction API โŒ โœ…
Coinbase Wallet โŒ โœ… (WebGL only)
Browser Extension Wallets โŒ โœ… (WebGL only)
Fiat Onramp โŒ โœ… (WebGL only)
ENS Resolution โŒ โœ…
Swaps โŒ โœ… (WebGL only)
Analytics โŒ โœ…
Email & Social Login โŒ ๐Ÿ”œ
UI Framework uGUI UI Toolkit in native, HTML in WebGL
Supported Networks Blockchain-agnostic Only EVM

Deprecated WalletConnectUnity Packages

Package Description OpenUPM
Core High-level, Unity-friendly extension of WalletConnectSharp
- Automatic active session management
- Option to resume session from storage
- Deep linking support
- IL2CPP support
- Lightweight IJsonRpcConnection implementation
- QR Code generation utility
- API to load wallets data and visual assets
openupm
Modal Simplest and most minimal way to connect your players with WalletConnect openupm
UI This is a technical package that provides UI for WalletConnect Modal. It is not intended to be used directly, but rather as a dependency of WalletConnect Modal. openupm
Nethereum This Unity package provides a simple way to integrate WalletConnect with Nethereum library. openupm

Older versions of WalletConnectUnity are available under legacy/* branches

Prerequisites

  • Unity 2021.3 or above
  • IL2CPP managed code stripping level: Minimal (or lower)

Supported Platforms

Documentation

Installation

Install via OpenUPM CLI

To install packages via OpenUPM, you need to have Node.js and openupm-cli installed. Once you have them installed, you can run the following commands:

  • WalletConnect Modal:
    openupm add com.walletconnect.modal
  • WalletConnectUnity Core:
    openupm add com.walletconnect.core
Install via Package Manager with OpenUPM
  1. Open Advanced Project Settings from the gear โš™ menu located at the top right of the Package Managerโ€™s toolbar
  2. Add a new scoped registry with the following details:
    • Name: OpenUPM
    • URL: https://package.openupm.com
    • Scope(s): com.walletconnect
  3. Press plus โž• and then Save buttons
  4. In the Package Manager windows open the add โž• menu from the toolbar
  5. Select Add package by name...
  6. Enter the name of the package you want to install:
    • WalletConnectUnity Modal: com.walletconnect.modal
    • WalletConnectUnity Core: com.walletconnect.core
  7. Press Add button
Install via Package Manager with Git URL
  1. Open the add โž• menu in the Package Managerโ€™s toolbar
  2. Select Add package from git URL...
  3. Enter the package URL. Note that when installing via a git URL, the package manager won't install git dependencies automatically. It's important to install the packages in the order they are listed below. Otherwise, the installation may fail.
    • WalletConnectUnity Core: https://github.com/WalletConnect/WalletConnectUnity.git?path=Packages/com.walletconnect.core
    • WalletConnectUnity UI: https://github.com/WalletConnect/WalletConnectUnity.git?path=Packages/com.walletconnect.ui
    • WalletConnectUnity Modal: https://github.com/WalletConnect/WalletConnectUnity.git?path=Packages/com.walletconnect.modal
  4. Press Add button

It's possible to lock the version of the package by adding #{version} at the end of the git URL, where #{version} is the git tag of the version you want to use. For example, to install version 1.0.0 of WalletConnectUnity Modal, use the following URL:

https://github.com/WalletConnect/WalletConnectUnity.git?path=Packages/com.walletconnect.modal#modal/1.0.0

Usage

  1. Set up in project id and metadata WalletConnectProjectConfig ScriptableAsset (created automatically located at Assets/WalletConnectUnity/Resources/WalletConnectProjectConfig.asset, do NOT move it outside of Resources directory).
  2. Initialize WalletConnect and connect wallet:
// Initialize singleton
await WalletConnect.Instance.InitializeAsync();

// Or handle instancing manually
var walletConnectUnity = new WalletConnect();
await walletConnectUnity.InitializeAsync();


// Try resume last session
var sessionResumed = await WalletConnect.Instance.TryResumeSessionAsync();
if (!sessionResumed)
{
    var connectedData = await WalletConnect.Instance.ConnectAsync(connectOptions);

    // Create QR code texture
    var texture = WalletConnectUnity.Core.Utils.QRCode.EncodeTexture(connectedData.Uri);

    // ... Display QR code texture

    // Wait for wallet approval
    await connectedData.Approval;
}

WalletConnectProjectConfig Fields

  • Id - The id of your project. This will be used inside the relay server.
  • Client Metadata
    • Name - The name of your app. This will be used inside the authentication request.
    • Description - The description of your app. This will be used inside the authentication request.
    • Url - The url of your app. This will be used inside the authentication request.
    • Icons - The icons of your app. This will be used inside the authentication request.
    • Very Url - The verification URL of your app. Currently used but not enforced

WebGL Usage

Due to WebGL's single-threaded nature, certain asynchronous operations like Task.Run, Task.ContinueWith, Task.Delay, and ConfigureAwait(false) are not natively supported.

To enable these operations in WebGL builds, an additional third-party package, WebGLThreadingPatcher, is required. This package modifies the Unity WebGL build to delegate work to the SynchronizationContext, allowing these operations to be executed on the same thread without blocking the main application. Please note that all tasks are still executed on a single thread, and any blocking calls will freeze the entire application.

The WebGLThreadingPatcher package can be added via git URL:

https://github.com/VolodymyrBS/WebGLThreadingPatcher.git

Sample