WalletConnectUnity Save

WalletConnect v2 and Modal for Unity 🎮

Project README

WalletConnectUnity

This repository is a monorepo of packages that extend WalletConnectSharp and brings WalletConnect to Unity.

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

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. Follow the error messages from the console and add all necessary packages manually
    • WalletConnectUnity Modal: https://github.com/WalletConnect/WalletConnectUnity.git?path=Packages/com.walletconnect.modal
    • WalletConnectUnity UI: https://github.com/WalletConnect/WalletConnectUnity.git?path=Packages/com.walletconnect.ui
    • WalletConnectUnity Core: https://github.com/WalletConnect/WalletConnectUnity.git?path=Packages/com.walletconnect.core
  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

Open Source Agenda is not affiliated with "WalletConnectUnity" Project. README Source: WalletConnect/WalletConnectUnity
Stars
129
Open Issues
9
Last Commit
1 week ago
License
MIT

Open Source Agenda Badge

Open Source Agenda Rating